我希望有一个正则表达式来匹配一个单词,即使字符之间有空格。当我想匹配单词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
注意:如果每个字母之间只允许有一个空格,则可以使用?
量词而不是*
:
t's?e's?s's?t
为什么不从输入中删除所有水平空格,然后匹配regex:
$input = 't e s t';
$regex = '/'btest'b/i';
preg_match($regex, preg_replace('/'h+/', '', $input), $m);