我想用下面的正則表達式用PHP在字符串的開始替換字符的所有重複:正則表達式的問題與PHP
^.{3,5000}
如果我使用
echo preg_replace('#\^.{3,5000}#i', '', '------This is a test.');
迴音必文本「------這是一個測試。」儘管正則表達式本身在任何正則表達式測試器中都能正常工作。
再見, 基督教
我想用下面的正則表達式用PHP在字符串的開始替換字符的所有重複:正則表達式的問題與PHP
^.{3,5000}
如果我使用
echo preg_replace('#\^.{3,5000}#i', '', '------This is a test.');
迴音必文本「------這是一個測試。」儘管正則表達式本身在任何正則表達式測試器中都能正常工作。
再見, 基督教
試試這個:
<?php
echo preg_replace('#^(.)\1{3,5000}#', '', '------This is a test.');
?>
,它將打印:
This is a test.
,你可以看到Ideone。
請注意,圍繞.
的圓括號存儲與組1中匹配的任何內容。然後將組1重複3到5000次。因此,總共至少匹配4個重複字符。如果你想匹配(後和任意量)至少3個重複字符,你可以做這樣的事情:
'#^(.)\1{2,}#'
(由{2,}
省略第二整數值,你會匹配任何金額。總之,{2,}
的意思是:「兩個或更多」)
謝謝巴特!這正是我正在尋找的...... – itsame69 2011-04-19 07:03:43
你已經逃脫了^
!將其更改爲^.{3,5000}
,它應該可以工作。
但是,這隻會取代3到5000個字符(換行符除外),而不僅僅是重複的字符串。 – 2011-04-17 18:42:03
對不起,他說它在第一篇文章中使用正則表達式測試人員,所以我沒有想到:P – Ryan 2011-04-17 18:44:35
:),是的,儘管正則表達式引擎不會產生任何錯誤消息, OP的意思是「它的工作原理」)。 – 2011-04-17 18:49:41
你爲什麼在插入符號前加上反斜線?現在它匹配一個文字'^',而不是像你想要的字符串的起始位置。 – 2011-04-17 20:32:33