Regexp(TuxRadar)についてオンラインのリソースをPHPで読むことを言っていないと言います。 著者によれば、以下はパターンに "aaa1"をマッチせず、したがってfalse(0)を返しますが、真(1)になります。Regexpがtrueを返すが、書籍の作者はそれが
なぜですか?
Regexp(TuxRadar)についてオンラインのリソースをPHPで読むことを言っていないと言います。 著者によれば、以下はパターンに "aaa1"をマッチせず、したがってfalse(0)を返しますが、真(1)になります。Regexpがtrueを返すが、書籍の作者はそれが
なぜですか?
あなたは必ずそこに後続の$
があると想定されていないされていますか?最初の[a-z]
ブロックが最初の2つのa
文字に一致し、[0-9]
が何も一致せず、最後の[a-z]
が3番目のa
に一致した場合、trueを返すことはかなり意味があります。末尾の1
は無視されます。
は小文字
正規表現に固定されている場合、これが唯一の真実であると終わらなければなりません:そこに誤りがありますように見えるん
ブックへのリンクを見てみると、文字列の終わりは$
です。
[0-9]?
は数字ゼロまたは1回と一致するため、一致します。
<?php
$str = "aaa1";
print preg_match("/[a-z]+[0-9]+[a-z]{1}/", $str);
?>
は一致しません。
正規表現
かもしれない文字と一致することを意味し、2 - 任意の手段一致するものはありません。3はaと一致します。
そして、[[0-9]? 'の部分があるのは何ですか?正規表現はそれを無視しますか? – Bob
@Bob「?」は「前の0または1と一致する」を意味します。これは、前の数字の "0"が一致したため、文字列に数字がない場合は '[0-9]? 'がtrueを返すことを意味します。 '[0-9]? 'の意味は、2つ以上の数字があった場合、正規表現によっては失敗する可能性があります。 –
文字列の最後にはアルファベットがありません。 pre_matchをvarに割り当ててからvar_dumpしてみてください。 – HappyTimeGopher
@HappyTimeGopher - 間違っています。試してごらん! –
@Edあなたは正しいと思いますが、今はなぜでしょうか:) – HappyTimeGopher