Ios 搜索并替换为“;仅匹配单词”;选项
我需要替换句子中的所有内容。我的问题是,当我替换“a”时,它会替换word中的这个字母Ios 搜索并替换为“;仅匹配单词”;选项,ios,regex,swift,Ios,Regex,Swift,我需要替换句子中的所有内容。我的问题是,当我替换“a”时,它会替换word中的这个字母 str.stringByReplacingOccurrencesOfString(“a”,带字符串:“”) 例如: a匹配a 结果将是: mtch 但是我想:匹配你应该尝试这样的单词边界/\ba\b/。应使用g全局搜索和不区分大小写的i标志 单词边界\b确保a后面或前面没有字符 您可以使用\b单词边界检测整个单词,还可以使用\s*(1+空格)抓取这些单词后面的可选空格。然后,我们可以确保.stringByTr
str.stringByReplacingOccurrencesOfString(“a”,带字符串:“”)
例如:
a匹配a
结果将是:
mtch
但是我想:
匹配
你应该尝试这样的单词边界/\ba\b/
。应使用g
全局搜索和不区分大小写的i
标志
单词边界\b
确保a
后面或前面没有字符
您可以使用
\b
单词边界检测整个单词,还可以使用\s*
(1+空格)抓取这些单词后面的可选空格。然后,我们可以确保.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())中没有前导空格。
还请注意,Swift中的字符串是C字符串(支持转义序列),并且由于正则表达式特殊元字符需要使用文字反斜杠转义,因此实际上需要将模式中的反斜杠加倍(即\s
->“\\s”
)
以下是Swift 2.1示例代码:
var s = "a match a"
var out_s = ""
if let regex = try? NSRegularExpression(pattern: "\\ba\\b\\s*", options: .CaseInsensitive) {
out_s = regex.stringByReplacingMatchesInString(s, options: .WithTransparentBounds, range: NSMakeRange(0, s.characters.count), withTemplate: "")
print("\""+out_s.stringByTrimmingCharactersInSet(
NSCharacterSet.whitespaceAndNewlineCharacterSet()
)+"\"")
}
它打印“匹配”
还请注意,options:.不区分大小写
将执行不区分大小写的匹配,请使用options:[]
使搜索区分大小写
现在,如果您有一个限定词列表,请使用交替:
此表达式将匹配
a
,a
或后跟0+空格的。您期望的结果是什么?结果应该是:match
如果他们的引擎支持断言,请使用类似的正则表达式(?为了获得更好的结果。您能提供有关swift的示例吗?@Arti:对不起,我不是swift程序员。
"\\b(?:an?|the)\\b\\s*"