我想要一个匹配单词的正则表达式,即使字符之间有空格也是如此。 当我想这个词test
匹配,它应该符合以下几点:正则表达式匹配一个单词,即使字母之间有空格
test t est t e s t
等等,但它不应该像这场比赛的事情:
tste te ts s tet
我有这个正则表达式: (t[\s]*e[\s]*s[\s]*t[\s]*)
但我不认为这是非常有效的。
我想要一个匹配单词的正则表达式,即使字符之间有空格也是如此。 当我想这个词test
匹配,它应该符合以下几点:正则表达式匹配一个单词,即使字母之间有空格
test t est t e s t
等等,但它不应该像这场比赛的事情:
tste te ts s tet
我有这个正则表达式: (t[\s]*e[\s]*s[\s]*t[\s]*)
但我不认为这是非常有效的。
实际上,它与t\s*e\s*s\s*t
相同(如果单词出现在较大的字符串内,则最好使用\bt\s*e\s*s\s*t\b
)。这是匹配这些单词的唯一方法。你必须消耗这些空间,否则你将不会有比赛。
那么没有更好的方法来做到这一点? – SheperdOfFire 2015-03-31 08:02:17
那么,你可能会在匹配前用空字符串替换所有空格。但是你会失去单词界限。 – 2015-03-31 08:06:30
好的,我希望能有一些更短,更高效的东西。比我必须去解决这个问题。 – SheperdOfFire 2015-03-31 08:08:14
为什么不从输入删除所有的水平空间,然后匹配的正则表达式:
$input = 't e s t';
$regex = '/\btest\b/i';
preg_match($regex, preg_replace('/\h+/', '', $input), $m);
删除字符类。 – 2015-03-31 07:55:36