この質問からHow to match this using regexregexを使用して2番目のオカレンスを検出する方法は? (PHP)
今、私はユーザーから提出されたデータから3D Dキーワードを検索したいと思います。このルールは、3DとDが文章内に存在する限り有効です(大文字と小文字は区別されません)。例えば
:
3Dzzzzzzzzzzzzzzzzzzz(Dのない第二出現ため無効)
zzzzzD(NO 3Dため無効)
xxx3DzzzzzD(有効な文字列で3DおよびDを得たので)
私は今この正規表現を使用していますが、何とかそれは1つの問題があります。
$subject = 'BLASHSH*3D*8qw9e08e2323*D*';
if(preg_match('/(?=.*3D)(?=.*D).*/i', $subject))
{
echo 'pattern match';
}
else
{
echo 'fail';
}
問題は、この文字列はまた真
3D(それはDのない第二発生するので無効であるべきである)
立体ABC(それはDのない第二発生するので無効であるべきであるが返されています)
これを解決するには?ルールは、3Dの後、または間に(ゼロ文字を含む)、Dの前に現れなければならず、前に任意の数の文字を持つことができるということである場合
3Dのような音が2番目のDの前に来なければなりません。正しく理解してください。 –
はい、大文字と小文字は区別されません。 Dも3Dの前になることができます。ありがとう。 – cyberfly