【发布时间】:2018-05-14 18:46:44
【问题描述】:
想象下面的句子:
The **quick** brown **fox** ...
如果我运行以下regex
let boldPattern = "\\*{2}([\\w ]+)\\*{2}"
let boldRegex = try NSRegularExpression(pattern: boldPattern)
let str = "The **quick** brown **fox** ..."
let results = regex.matches(in: str, range: NSRange(str.startIndex..., in: str))
results.forEach {
print("$0")
}
我能够得到**之间的所有单词。
我读过关于负正则表达式的文章,它会返回除我们试图“避免”的单词之外的所有单词。
鉴于上面的句子,有没有办法使用否定的regex 来获得与boldPattern 不匹配的单词,所以我会得到The brown ...,避免**words**??
编辑
我正在寻找围绕这种模式 ((?!\\*{2}([\\w ]+)\\*{2}).*) 的东西,搜索不以 ** word ** 开头的单词的东西
【问题讨论】:
-
实际上
*是问题,如果它是任何其他字符会更容易。*本身在正则表达式中有其含义。 -
@TheTiger 是的,你是对的。我不知道如何解决这个问题。正则表达式太难了。
-
在哪种情况下您的正则表达式工作错误?
-
@TheTiger 它不打印任何错误,但不匹配任何文本。这可能是正则表达式字符串中的拼写错误。
-
你正在打印
print("$0"),无论你用双引号写什么,它都会是一个字符串,因此即使在匹配之后,它也会每次都打印硬编码的$0。它应该类似于results.forEach { (value) in let range = value.range let matchString = (str as NSString).substring(with: range) as String print(matchString) }
标签: ios swift nsregularexpression