2015-03-31 96 views
-1

我想要一個匹配單詞的正則表達式,即使字符之間有空格也是如此。 當我想這個詞test匹配,它應該符合以下幾點:正則表達式匹配一個單詞,即使字母之間有空格

test t est t e s t

等等,但它不應該像這場比賽的事情:

tste te ts s tet

我有這個正則表達式: (t[\s]*e[\s]*s[\s]*t[\s]*) 但我不認爲這是非常有效的。

+0

刪除字符類。 – 2015-03-31 07:55:36

回答

1

實際上,它與t\s*e\s*s\s*t相同(如果單詞出現在較大的字符串內,則最好使用\bt\s*e\s*s\s*t\b)。這是匹配這些單詞的唯一方法。你必須消耗這些空間,否則你將不會有比賽。

+1

那麼沒有更好的方法來做到這一點? – SheperdOfFire 2015-03-31 08:02:17

+0

那麼,你可能會在匹配前用空字符串替換所有空格。但是你會失去單詞界限。 – 2015-03-31 08:06:30

+1

好的,我希望能有一些更短,更高效的東西。比我必須去解決這個問題。 – SheperdOfFire 2015-03-31 08:08:14

1

爲什麼不從輸入刪除所有的水平空間,然後匹配的正則表達式:

$input = 't e s t'; 
$regex = '/\btest\b/i'; 

preg_match($regex, preg_replace('/\h+/', '', $input), $m); 
相關問題