Swift替换子字符串正则表达式
我正在尝试使用正则表达式替换" title="正则表达式替换">正则表达式替换字符串中所有出现的英国汽车登记信息。
当字符串与以下正则表达式完全匹配时,以下swift代码可完美地用于a。
var myString = "DD11 AAA"var stringlength = countElements(myString)
var ierror: NSError?
var regex:NSRegularExpression = NSRegularExpression(pattern: "^([A-HK-PRSVWY][A-HJ-PR-Y])\\s?([0][2-9]|[1-9][0-9])\\s?[A-HJ-PR-Z]{3}$", options: NSRegularExpressionOptions.CaseInsensitive, error: &ierror)!
var modString = regex.stringByReplacingMatchesInString(myString, options: nil, range: NSMakeRange(0, stringlength), withTemplate: "XX")
print(modString)
结果是 XX
但是,以下操作无效,并且字符串未修改
var myString = "my car reg 1 - DD11 AAA my car reg 2 - AA22 BBB"var stringlength = countElements(myString)
var ierror: NSError?
var regex:NSRegularExpression = NSRegularExpression(pattern: "^([A-HK-PRSVWY][A-HJ-PR-Y])\\s?([0][2-9]|[1-9][0-9])\\s?[A-HJ-PR-Z]{3}$", options: NSRegularExpressionOptions.CaseInsensitive, error: &ierror)!
var modString = regex.stringByReplacingMatchesInString(myString, options: nil, range: NSMakeRange(0, stringlength), withTemplate: "XX")
print(modString)
结果是 my car reg 1 - DD11 AAA my car reg 2 - AA22 BBB
谁能给我任何指示?
回答:
您需要删除^
和$
锚点。
该^
装置 开始字符串 和$
手段 结束字符串
(或行,这取决于选项)。这就是第一个示例起作用的原因:在第一个测试字符串中,字符串的开头实际上是您的模式,并以该模式结尾。
在第二个测试字符串中,模式位于字符串的中间,因此^...
不能应用。如果您只删除^
,则$
将会在第二次出现注册号时适用,输出将是my car
reg 1 - DD11 AAA my car reg 2 - XX。
let myString = "my car reg 1 - DD11 AAA my car reg 2 - AA22 BBB"let regex = try! NSRegularExpression(pattern: "([A-HK-PRSVWY][A-HJ-PR-Y])\\s?([0][2-9]|[1-9][0-9])\\s?[A-HJ-PR-Z]{3}", options: NSRegularExpression.Options.caseInsensitive)
let range = NSMakeRange(0, myString.count)
let modString = regex.stringByReplacingMatches(in: myString, options: [], range: range, withTemplate: "XX")
print(modString)
// Output: "my car reg 1 - XX my car reg 2 - XX"
以上是 Swift替换子字符串正则表达式 的全部内容, 来源链接: utcz.com/qa/427374.html