php - 匹配重复的单词

标签 php regex

我想匹配像 abc abc 这样的重复词。这是正则表达式:

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

这对像这样的字符串很有用:

pds dd dd dd dd sd

并匹配 dd dd dd dd 作为一个组和 "dd", "dd" 但这不是我要找的.

我想单独匹配 dd,就像围绕 "" 拆分并返回 4 dd 的拆分语句一样。除了单个正则表达式之外,我不寻找任何其他方法。这可以使用两个正则表达式来完成,但我想知道是否可以在一个正则表达式中编写?

最佳答案

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

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

它不需要解释,因为正则表达式在 Regex101 中有很清楚的解释。 .

(?something|anotherthing) 看起来像一个 if else 语句。如果存在 something,则匹配它,否则尝试查找 anotherthing

在上面的正则表达式中,TRUEnull,因此正则表达式有效。

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

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

Second regex in action

关于php - 匹配重复的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55793465/

相关文章:

php - 如何在 php 中自动发送电子邮件?

php - 什么是 PHP 匿名函数?

php - 编写大型一键式切换按钮以替换单个复选框并提交按钮表单的最佳方法?

javascript - 使用 JavaScript 的 Google map 无法在 jQuery 选项卡中正确显示

regex - 在 Perl 中围绕一个外部字符进行拆分。组内的最小假设

php - MySQL 和 PHP - 插入 NULL 而不是空字符串

javascript - split 导致尾端丢失

regex - 非贪婪搜索和否定字符集的区别

java - 如何使用正则表达式重新排列方法访问修饰符

python - 正则表达式匹配所有非字母,不包括变音符号(python)