如何匹配只有重复模式的行

时间:2012-08-21 10:09:01

标签: regex

我正在尝试将(复合)单词与2个或更多内部点字符(不是句点)匹配

  1. 此行有单个•虚线词
  2. 这一行•有两个•点但有两个字
  3. 虽然这一行有几个•点•在一个单词里面
  4. 也希望匹配•一行•喜欢•这个超过1点
  5. 并且•喜欢•匹配具有单点和多点虚线的线
  6. 第3-5行是匹配

    到目前为止,我可以匹配所有这样的内容:

      

    \ W•\ W

    但我无法弄清楚如何排除等1和2行。

    这是我实际问题的简化版本,它在Xcode中搜索特定模式。我想我需要提高我对正则表达式的了解

2 个答案:

答案 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,无穷大]单词。