2015-10-19 273 views
0

現在我有一個正則表達式,我想更改正則表達式的一部分。匹配正則表達式中除空格外的所有字符

(.{3,}?) ~ 

^---代碼,它說這部分(即長度爲3個或更多的任意字符,並匹配到最近的空間),我想將其更改爲(任何字符,,空格爲,長度爲3或更多,並匹配最近的空格)。我怎麼會說,在正則表達式?

$text = "my name is to habert"; 
$regex = "~(?:my name is |my name\\\'s |i am |i\\\'m |it is |it\\\'s |call me)?(.{3,}?) ~i"; 
preg_match($regex, $text, $match); 
print_r($match); 

結果:

Array ([0] => my name [1] => my name) 

需要結果:

Array ([0] => name [1] => name) 
+2

'/([^] {3,...})/'似乎是你在找什麼。 – Ghedipunk

+0

@Ghedipunk爲什麼需要方括號?沒有它們,它就無法工作。 – frosty

+1

這是[字符類](http://www.regular-expressions.info/charclass.html)。 '[abc]'表示匹配a,b或c中的一個。脫字號(^)在前面,意思是不匹配該字符類中包含的任何內容。在這種情況下,它意味着匹配任何不是空格的字母。你可以通過'[^ \ s]'或'[\ S]'將它擴展到任何不是任何類型的空格(tab,space,newline)的字符。 – Ghedipunk

回答

0

掘墓人在這裏......因爲這個問題沒有一個答案,我會後我的。


(\S{3,})將努力爲您的需求


正則表達式說明:

(打開捕捉組

\S一切,但空格(同[^\s],你可以使用[^ ]太,但拉特之三僅適用於空格。)

{3,}必須包含三個或更多個字符

)關閉捕獲組

Test it here!

+0

'[^ \ s]'和'[^]'是不一樣的,'\ s'是'[\ t \ r \ n \ f]'的簡寫字符類。請參閱:http://www.regular-expressions.info/shorthand.html – Toto

相關問題