2014-09-20 47 views
0

我談的字符串是類似以下內容:正則表達式中的字符串每個點數3

xxxxx.xxxxxx.xxx.yyyyyyy.yyyyyy.yyyyyyyy.zzzz 

其中,x,y和z比其他任何東西「」 (點),即字母數字,特殊字符,空格,換行等

我想:

(\w|\d|\s){1,}.\.{3,} 
+1

您的正則表達式正在查找至少3個連續的點。你爲什麼在那裏有{3}? – Barmar 2014-09-20 21:03:00

+1

你真的想要匹配哪部分字符串?你是什​​麼意思__點數3_? – Barmar 2014-09-20 21:04:13

+0

我的意思是字符串中的每個第三個點,即假設我們有一個包含10個點的字符串,所以我想匹配點編號:3,6和9. – SaidbakR 2014-09-20 21:08:45

回答

2

使用:

(?:[^.]+\.){3} 

這適用於{3} quanti對整個團隊來說更爲複雜,而不僅僅是每個團隊結束時的.。既然你想匹配3組,我使用{3}; {3,}表示3個或更多組。

它使用更簡單的[^.]來匹配除.以外的所有內容(不需要在括號內換算點,因爲它沒有任何特殊含義)。

要在preg_replace中使用此替換每個第三個點,您需要匹配捕獲組中的點之前的所有內容。然後您可以使用$1將其複製到替換字符串。

preg_replace('/((?:[^.]+\.){2}[^.]+)\./', '$1<br/>', $string); 
+0

這是非常好的解決方案,它可能會被其他功能處理。但是,是否有可能與三分之一點本身相匹配? – SaidbakR 2014-09-20 21:21:05

+0

我在點周圍添加了一個捕獲組。但我不確定爲什麼你需要自己匹配點,但?它的價值永遠只是一個點。 – Barmar 2014-09-20 21:23:32

+0

我有很長的文章文字沒有任何換行符,所以我想用'preg_replace()' – SaidbakR 2014-09-20 21:27:30

1

使用^在一個字符前面匹配的一切,但這個人物

([^\.]+\.){3,} 
相關問題