【问题标题】:Regex match all words from capturing group, not just 2正则表达式匹配捕获组中的所有单词,而不仅仅是 2
【发布时间】:2018-12-16 04:45:43
【问题描述】:

我有这个正则表达式:

\b(\w+)\s+\1{1,}\b

在线测试:https://regex101.com/r/iHnSCs/1m

但它只匹配 2 个连续的单词。如何匹配更多?我尝试了几个解决方案,但似乎我没有做对。谢谢。

【问题讨论】:

    标签: regex


    【解决方案1】:

    \s+\1 放入非捕获组,然后重复该组:

    \b(\w+)(?:\s+\1)+\b
    

    (要么关闭 U 标志,要么使用 ? 使 repitition 变得贪婪 - 还要注意 {1,} 简化为 +

    https://regex101.com/r/iHnSCs/2

    【讨论】:

    • 正确答案。现在阅读有关非捕获组的信息。谢谢。
    • 从技术上讲,您没有必须使用非捕获组,它只是比捕获组更合适 - 捕获组适用于您想要 保存组中的任何内容以供以后使用(例如在反向引用中),非捕获组允许通用逻辑分组而不保存在那里精确匹配的内容。
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2015-01-28
    • 2017-07-08
    相关资源
    最近更新 更多