代码之家  ›  专栏  ›  技术社区  ›  Keng

带有标点符号的重复单词的正则表达式

  •  2
  • Keng  · 技术社区  · 16 年前

    例如:

    Vivamus Vivamus diam, diam, Vivamus Vivamus diam, diam Vivamus
    

    这里应该有4个不同的点击。

    谢谢

    (\w*(?:[ ,\.])*?)\1
    

    PS:由于它引起的混乱,我不会说我正在使用Perl引擎。

    3 回复  |  直到 16 年前
        1
  •  8
  •   TJ L    16 年前

    这个 (?: 是非捕获括号,表示它不会存储匹配项。您将需要使用捕获括号。

    (\w+)\W+\1
    
        2
  •  1
  •   Stunner    7 年前

    [[\w|\W]+ ]+

    \w :字字符

    \W :非字字符

    [\w|\W]+ :每个字符可以是单词或非单词字符,并重复1次或多次

    [\w |\w]+]+ :…在某个点上附加空格,全部出现1次或多次

        3
  •  0
  •   Jonathan Leffler    16 年前

    原始表达式不会为标点符号创建单独的捕获,但会在第一个捕获中包含捕获的标点符号。这意味着它将发现如下情况:

    diam, diam, really, really, twice.
    

    但您对标点符号并不感兴趣,因此tj111的解决方案可以正常工作,尽管“(?:)是非捕获括号”的解释有点。。。不完整?引用的评论是准确的,但这并不是整个正则表达式失败的原因。