微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-匹配重复的单词

我想匹配重复的单词,如abc abc.这是正则表达式:

(\w+)(\s\1)+

这对于像这样的字符串非常有用:

pds dd dd dd dd sd

并将dd dd dd dd作为一个组进行匹配,并匹配“ dd”,“ dd”,但这不是我想要的.

我想分别匹配dd,就像将split拆分为“”并返回4 dd的split语句一样.除了单个正则表达式外,我没有寻找任何其他方法.这可以使用两个正则表达式来完成,但是我想知道是否可以在单个正则表达式中编写?

解决方法:

我最终使用了此正则表达式:

(\w+)(?(?=\s+\1\s+\1)|\s+\K(\1))

不需要解释,因为正则表达式在Regex101处有非常清楚的解释.

(?something | otherothering)看起来像一个if else语句.如果有东西存在,则匹配它,否则尝试寻找其他东西.

在上述正则表达式中,TRUE为空,因此该正则表达式起作用.

这是revo编写的另一个正则表达式,它不能捕获多个组:

(?|\b(\w+)(?= +\1\b) +|\G(?!^)(\w+))

Second regex in action

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐