Regexp(TuxRadar) に関する PHP のオンライン リソースを読む。著者によると、以下は「aaa1」をパターンに一致させるべきではないため、false(0) を返しますが、true(1) を取得します。
<?php
$str = "aaa1";
print preg_match("/[a-z]+[0-9]?[a-z]{1}/", $str);
?>
なんで?
そこに末尾があるはずがないと確信しています$
か?それがなければ、 true を返すことは非常に理にかなっています。最初の[a-z]
ブロックは最初の 2a
文字に[0-9]
一致し、 は何も一致せず、最後のブロック[a-z]
は 3 番目に一致しa
ます。末尾1
は無視されます。
本へのリンクを見ると、そこにエラーがあるようです:
小文字で終わる必要があります
これは、正規表現が文字列の末尾に$
.
[0-9]?
数字が 0回または 1 回一致するため、一致します。
<?php
$str = "aaa1";
print preg_match("/[a-z]+[0-9]+[a-z]{1}/", $str);
?>
試合にはなりません。
正規表現を分解しましょう
したがって、[0-9] はオプションであるため、1 は aa に一致し、2 は何も一致せず、3 は a に一致します。