2016-02-26 104 views
1

我試圖刪除一段在Int.和換行符之間開始的字符串。preg替換正則表達式在

$string = preg_replace('/Int.[\s\S]+?\n/', '', $string); 

這裏是源字符串:

My address 
Int. blabla 
blabla blabla 

這可能嗎?

+0

請始終將預期結果納入問題主體 –

回答

2

您可以採用如下方案:

$s = "My address\nInt. blabla\nblabla blabla"; 
$s = preg_replace('~Int\.\h*([^\r\n]+)[\r\n]*~', '', $s); 
echo $s; // => My address\nblabla blabla 

IDEONE demo

正則表達式匹配Int.,然後零個或多個空格(\h*,只是左修整的結果),然後將捕獲進入第1組一個或多個字符,而不是換行符和回車符號(([^\r\n]+)

+0

您有沒有睡過,Wiktor? – Jan

+1

@Jan usleep也許:) :) :) –

+0

我睡了6個小時 - 夠了:)我會在星期六和星期天睡覺。 –

1

要刪除字符串,只需使用以下代碼:

$string = "My address\nInt. blabla\nblabla blabla"; 
$regex = '~  # delimiter 
      ^Int\. # Looks for Int. at the beginning of a line 
      .*  # everything else except a newline 
      ~xm'; # free spacing mode and multiline 
$replacement = ''; 
$string = preg_replace($regex, $replacement, $string); 

你需要修飾x允許的意見和m允許插入符號(^),以適應在任何線。 如果要刪除整條生產線(包括換行符,那是),正則表達式更改爲:

$regex = '~^Int\..*\R~m'; 

a demo on ideone.com

+0

感謝它的工作! – Erik

+0

正確安排。 –