我谈到的字符串如下所示:
xxxxx.xxxxxx.xxx.yyyyyyy.yyyyyy.yyyyyyyy.zzzz
其中x,y和z不是“。”。 (点)即字母数字,特殊字符,空格,换行等。
我试过了:
(\w|\d|\s){1,}.\.{3,}
答案 0 :(得分:2)
使用:
(?:[^.]+\.){3}
这会将{3}
量词应用于整个群组,而不仅仅是每个群组末尾的.
。由于您希望完全匹配3组,我使用{3}
; {3,}
表示3个或更多组。
它使用更简单的[^.]
来匹配除.
之外的所有内容(它不需要在括号内转义点,因为它没有任何特殊含义)。
要在preg_replace
中使用此替换每个第三个点,您需要匹配之前捕获组中该点的所有内容。然后,您可以使用$1
将其复制到替换字符串。
preg_replace('/((?:[^.]+\.){2}[^.]+)\./', '$1<br/>', $string);
答案 1 :(得分:1)
在角色前面使用^
来匹配除此角色之外的所有内容
([^\.]+\.){3,}