2015-03-31 165 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); 
相关问题