2013-11-21 50 views
-1

我也有類似的字符串這一個:正則表達式 - 如何詞鏈匹配,直到非「字」字

這是一個測試字符串 - 這是第二次測試串;這是第三個測試字符串

我的目標是隻匹配字符的第一個鏈條:

這是一個測試字符串

分隔符可以是除一個單詞什麼: ( - ,;,_,?等....)

我該怎麼用一個正則表達式?

謝謝。

回答

2
/([a-z\d\s]+)/i 

這個匹配的一個或多個是字母(a-z),數字(\d),或一個空格(\s)的。
修飾符i使其匹配不區分大小寫。

請注意,在這種情況下,您不能使用\w來匹配字母,因爲它也與OP的問題中明確不允許的下劃線匹配。

+0

驚人的,非常感謝 –

+1

被警告說,如果輸出包含數字,這將不會得到預期的結果是:「這是我的1刺;這是我的2字符串,這是我的3字符串「將返回」這是我的「 –

+0

@JesperBunnyJensen謝謝,增加了'\ d'。 – SQB

1

使用preg_replace

$string = 'This is a test string - This is a second test string ; This is a third test string'; 
$match = preg_replace('/[^\sa-z].*/i', '', $string); 
echo $match; // => This is a test string 
+0

也適用,但SQB的答案稍微複雜一些。非常感謝 –

0

考慮下面的正則表達式...

^[\w\s]* 

祝您好運!

+0

'\ w'不僅匹配字母和數字,還匹配'_'。 – falsetru

+0

\ w應該匹配字母數字字符 – gpmurthy

+0

根據[PHP PCRE正則表達式語法 - 轉義序列](http://www.php.net/manual/en/regexp.reference.escape.php),'\ w'匹配任何「單詞「字符。 ....「單詞」字符是任何字母或數字或下劃線字符,即任何可以成爲Perl「單詞」一部分的字符。 – falsetru

0

檢查這個表達式,會發現在所有的情況下,字符空間

/[A-Za-z\s]+/is