PHP的RegEx问题

its*_*e69 1 php regex

我想用PHP的以下正则表达式替换字符串开头的所有字符重复:

^.{3,5000}
Run Code Online (Sandbox Code Playgroud)

如果我使用

echo preg_replace('#\^.{3,5000}#i', '', '------This is a test.');
Run Code Online (Sandbox Code Playgroud)

将回应文本"------这是一个考验".虽然正则表达式本身在任何正则表达式测试中都能正常工作.

再见,克里斯蒂安

Bar*_*ers 6

试试这个:

<?php
echo preg_replace('#^(.)\1{3,5000}#', '', '------This is a test.');
?>
Run Code Online (Sandbox Code Playgroud)

将打印:

This is a test.
Run Code Online (Sandbox Code Playgroud)

正如你在Ideone上看到的那样.

注意,括号内的括号.存储在组1中匹配的任何内容.然后,该组1重复3到5000次.因此,总共匹配至少4个重复字符.如果你想匹配至少3个重复的字符(以及之后的任意数量),你可以这样做:

'#^(.)\1{2,}#'
Run Code Online (Sandbox Code Playgroud)

(通过省略第二个整数值,{2,}您将匹配任何金额.简而言之,{2,}意味着:"两个或更多")