2011-04-17 76 views
1

我想用下面的正則表達式用PHP在字符串的開始替換字符的所有重複:正則表達式的問題與PHP

^.{3,5000} 

如果我使用

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

迴音必文本「------這是一個測試。」儘管正則表達式本身在任何正則表達式測試器中都能正常工作。

再見, 基督教

+0

你爲什麼在插入符號前加上反斜線?現在它匹配一個文字'^',而不是像你想要的字符串的起始位置。 – 2011-04-17 20:32:33

回答

6

試試這個:

<?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,}的意思是:「兩個或更多」)

+0

謝謝巴特!這正是我正在尋找的...... – itsame69 2011-04-19 07:03:43

0

你已經逃脫了^!將其更改爲^.{3,5000},它應該可以工作。

+2

但是,這隻會取代3到5000個字符(換行符除外),而不僅僅是重複的字符串。 – 2011-04-17 18:42:03

+0

對不起,他說它在第一篇文章中使用正則表達式測試人員,所以我沒有想到:P – Ryan 2011-04-17 18:44:35

+0

:),是的,儘管正則表達式引擎不會產生任何錯誤消息, OP的意思是「它的工作原理」)。 – 2011-04-17 18:49:41