Php 匹配重复的单词
我想匹配重复的单词,如Php 匹配重复的单词,php,regex,Php,Regex,我想匹配重复的单词,如abc。以下是正则表达式: (\w+)(\s\1)+ 这适用于以下字符串: pds dd dd dd dd sd 并将dd作为一个组与“dd”,“dd”匹配,但这不是我要找的 我想分别匹配dd,就像split语句一样,它在“周围拆分并返回4dd。我不寻找任何其他方法,除了一个正则表达式。这可以使用两个正则表达式来完成,但我想知道是否可以在单个正则表达式中写入?通过使用空格中的explode()将字符串转换为数组 查找数组_count_values()重复的值数 我最终使
abc
。以下是正则表达式:
(\w+)(\s\1)+
这适用于以下字符串:
pds dd dd dd dd sd
并将dd
作为一个组与“dd”
,“dd”
匹配,但这不是我要找的
我想分别匹配
dd
,就像split语句一样,它在“
周围拆分并返回4dd
。我不寻找任何其他方法,除了一个正则表达式。这可以使用两个正则表达式来完成,但我想知道是否可以在单个正则表达式中写入?通过使用空格中的explode()将字符串转换为数组
查找数组_count_values()重复的值数
我最终使用了这个正则表达式:
(?|\b(\w+)(?= +\1\b) +|\G(?!^)(\w+))
它不需要解释,因为正则表达式在上有非常清楚的解释
(?某物|另一物)
看起来像是一个if-else
语句。如果存在某个东西
,则匹配它,然后尝试查找另一个东西
在上面的正则表达式中,TRUE
是null
,因此正则表达式可以工作
下面是另一个编写的正则表达式,它不捕获多个组:
除了一个正则表达式外,我不寻找任何其他方法。从每个匹配中,您可以获得第1组和第2组的内容,如图所示:那么您可以使用多个捕获组吗?@revo这是一个漂亮的正则表达式。干得好:)我喜欢。我把它缩短了一点。
dd is repeated 4 times
Array
(
[pds] => 1
[dd] => 4
[sd] => 1
)
(\w+)(?(?=\s+\1\s+\1)|\s+\K(\1))
(?|\b(\w+)(?= +\1\b) +|\G(?!^)(\w+))