0

文字列内の一連の文字を照合したいと思います。たとえば、文字 TBEI がある場合、文字 T で始まり、文字 B と E を少なくとも 1 回含むすべての文字列に一致させたいとします。2 番目の文字は 3 番目の文字の前に表示される必要があり、文字の間に無限の数の文字が存在する可能性があります。

つまり、文字列 TBE は文字列 Table、Trouble、および Terrible に一致しますが、Teb には一致しません。

これをphpでコーディングしようとしています

$A = 'T';
$B = 'B';
$C = 'E';

$matches = preg_grep('/^'.$A.'.+'.$B.'.+'.$C.'/', $words);

ここで、words は単語のリストを含む配列です。私のやり方ではアルゴリズムは機能しますが、$A $B または $C の間に文字がない単語を見つけることができません。

正規表現を使用してこれを修正するにはどうすればよいですか?

4

1 に答える 1

1

$A $B または $C の間に文字がない単語を見つけることができない理由は、 $A $B または $C.+の間で少なくとも 1 文字を一致させようとしている which を使用しているためです。

.*の代わりに使用.+

于 2013-02-02T17:12:39.553 に答える