Tom*_*ner 2 php regex preg-replace
我想要替换每个WORD中的所有连续字符,如果有三个以上(三个是德语中最可能的,两个是英语,所以我知道输出示例在语法上是错误的).
输入示例:
Hellooooo Louis, whaaaaaat's up pal?
Run Code Online (Sandbox Code Playgroud)
预期产量:
Hellooo Louis, whaaat's up pal?
Run Code Online (Sandbox Code Playgroud)
我试图改变:
preg_replace('/(\w)\1+/', '$1', $word);
Run Code Online (Sandbox Code Playgroud)
至
preg_replace('/(\w)\3+/', '$1', $word);
Run Code Online (Sandbox Code Playgroud)
但是,它不会输出任何内容.
您可以使用以下正则表达式:
((\w)\2{2})\2+
Run Code Online (Sandbox Code Playgroud)
见演示
替换为$1.
$re = "#((\w)\\2{2})\\2+#";
$str = "Hellooooo Louis, whaaaaaat's up pal?";
$subst = "$1";
$result = preg_replace($re, $subst, $str);
echo $result;
Run Code Online (Sandbox Code Playgroud)
输出:
Hellooo Louis, whaaat's up pal?
Run Code Online (Sandbox Code Playgroud)
说明:
我们捕获符号(\w)- 它是第2组值.然后,我们检查它是否后跟相同的字符\2{2}恰好2次,然后我们将其捕获到组1.然后,我们将更多相同的后续字符与后向\2引用匹配.