なぜ機能し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? (.+?)$/