Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 匹配重复的单词_Php_Regex - Fatal编程技术网

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语句一样,它在
周围拆分并返回4
dd
。我不寻找任何其他方法,除了一个正则表达式。这可以使用两个正则表达式来完成,但我想知道是否可以在单个正则表达式中写入?

通过使用空格中的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+))