Ios 搜索并替换为“;仅匹配单词”;选项

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

我需要替换句子中的所有内容。我的问题是,当我替换“a”时,它会替换word中的这个字母

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*"