我正在尝试将(复合)单词与2个或更多内部点字符(不是句点)匹配
第3-5行是匹配
到目前为止,我可以匹配所有这样的内容:
\ W•\ W
但我无法弄清楚如何排除等1和2行。
这是我实际问题的简化版本,它在Xcode中搜索特定模式。我想我需要提高我对正则表达式的了解
答案 0 :(得分:1)
你的正则表达式只找一个点。尝试
\w•\w+•
+
允许重复上一个令牌,因此此正则表达式将匹配第3行中的l•dots•
。
答案 1 :(得分:1)
(\w+•\w+•(?:\w+•)*\w+)
这将帮助您捕捉字符串中的匹配
所以,让我们玩吧:
\w+
< - 此匹配词
\w+•\w+•
< - 这有两个点的字样,如下所示:a•line•
(?:\w+•)*
< - 此次匹配[0,infinity]
次\w+•
次,a•line•like•
< - 它将抓住a•
,line•
,{ {1}}(和其他单词后面的一个点或它捕获零长度字符串)
like•
< - 我使用它来防止匹配行为,它只是分组
(?:pattern)
< - 它会抓住最后一个字
所以,现在让我们看一下模式:
\w+
(word•word•([grouping]word•)[0, infinity]{times}word)
会抓住
word•word•word
会抓住
word•word•word•word
将抓住
等等
它将捕获单词序列,仅用一个点分隔,其中包含[3,无穷大]单词。