我正在尝试使用正则表达式快速替换匹配的字符串,我的要求如下
originalString = "It is live now at Germany(DE)"
我希望(" ")
ie中的字符串DE
以空格分隔,即“ D E”
所以replaceString应该是"It is live now at Germany(D E)"
我尝试下面的代码
var value: NSMutableString = "It is live now at Germany(DE)"
let pattern = "(\\([A-Za-z ]+\\))"
let regex = try? NSRegularExpression(pattern: pattern)
regex?.replaceMatches(in: value, options: .reportProgress, range:
NSRange(location: 0,length: value.length), withTemplate: " $1 ")
print(value)
输出是It is live now at Germany (DE)
,我知道这不是必需的。这里是基于模板的,我们无法根据匹配的字符串值进行修改。有什么办法可以做到这一点?
提前致谢
您可以使用
var value: NSMutableString = "It is live now at Germany(DE) or (SOFE)"
let pattern = "(?<=\\G(?<!\\A)|\\()[A-Za-z](?=[A-Za-z]+\\))"
let regex = try? NSRegularExpression(pattern: pattern)
regex?.replaceMatches(in: value, options: .reportProgress, range: NSRange(location: 0,length: value.length), withTemplate: "$0 ")
print(value)
要不就
let val = "It is live now at Germany(DE) or (SOFE)"
let pattern = "(?<=\\G(?<!\\A)|\\()[A-Za-z](?=[A-Za-z]+\\))"
print( val.replacingOccurrences(of: pattern, with: "$0 ", options: .regularExpression, range: nil) )
输出: It is live now at Germany(D E) or (S O F E)
图案细节
(?<=\\G(?<!\\A)|\\()
-(
与前面成功匹配之后或结尾位置匹配的正向后看[A-Za-z]
-匹配并使用任何ASCII字母(?=[A-Za-z]+\\))
-与位置相匹配的正向超前查询,后跟1+ ASCII字母和一个)
字符。将$0
在更换插入整场比赛值回生成的字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句