我需要一個正則表達式來匹配字符串中的前兩個單詞(它們可能包含字母,數字,逗號和其他標點符號,但不包含空格,製表符或新行)。 我的解決方案是([^\s]+\s+){2}
,但如果它在'123 word,hello'*中匹配類似:'123 word' *,它不適用於只有兩個單詞並且之後沒有空格的字符串。pcre正則表達式匹配前兩個單詞,數字
什麼是這個任務的正確的正則表達式?
我需要一個正則表達式來匹配字符串中的前兩個單詞(它們可能包含字母,數字,逗號和其他標點符號,但不包含空格,製表符或新行)。 我的解決方案是([^\s]+\s+){2}
,但如果它在'123 word,hello'*中匹配類似:'123 word' *,它不適用於只有兩個單詞並且之後沒有空格的字符串。pcre正則表達式匹配前兩個單詞,數字
什麼是這個任務的正確的正則表達式?
你有它差不多吧:
([^\s]+\s+[^\s]+)
假設你不需要在使用什麼字符更強的控制。
如果您需要在兩個兩個詞匹配,或者僅只有一個字,你可以使用其中的一個:不要試圖匹配的話
([^\s]+\s+[^\s]+|[^\s]+)
([^\s]+(?:\s+[^\s]+)?)
如果你真的只想允許數字和字母[^\s]
不是限制性的。使用此:
/[a-z0-9]+(\s+[a-z0-9]+)?/i
,你可以在空白與preg_split()
拆分字符串。
+1這是個好主意,但對於我而言,在['preg_split()'](http://php.net/manual/en/function.preg-split.php)中沒有提及'$ limit'只是可怕的矯枉過正你可能有很長的字符串)。 – Vyktor
即使使用preg_split,但我有理由堅持正則表達式。無論如何謝謝 –
Vyktor +1 for preg_split限制 –
很好的回答。謝謝! –