なぜ機能しan?|the
ないのですか?PHP の preg_match() を使用しています。
完全な正規表現は次のとおり"/^an?|the (.+?) (is|was) an? (.+?)$/"
です。
"the mona lisa is a painting"
と合わせたい"a dog is an animal"
。
|the
最初の文字列の例に対応するために を追加するまで、正常に機能していました。
ありがとう!
あなたがそれを書いた方法は、次のいずれかを使用して一致します
^an?
また
the (.+?) (is|was) an? (.+?)$
これは明らかにあなたが望むものではありません。で行ったのと同じように、括弧で囲む必要がありますis|was
。
/^(an?|the) (.+?) (is|was) an? (.+?)$/
グループが結果に含まれないようにするには、構文が である一致しないグループを使用します(?: )
。したがって、次のように使用してください。
/^(?:an?|the) (.+?) (is|was) an? (.+?)$/