$regex = '/[aeiou]*/'
それは「aeiioauo」または「aaaaaaaaaaaa」、「eeeeeee」、「iiiiii」など (0 個以上のセット内の 1 文字のみ) に一致しますか。
ありがとうございました
ここには真面目な答えがないので、真面目に答えます。
これを渡すと:
$regex = '/[aeiou]*/'
preg_match
またはpreg_match_all
(または他のいくつかの関数) に対して、任意の文字列で一致を報告します。
preg_match
、preg_match_all
、preg_replace
およびpreg_replace_callback
all は、デフォルトで、正規表現に一致する重複しない 部分文字列を検索します。(他の言語には、文字列全体が正規表現と一致すると主張する関数がある場合がありますが、これは異なります)。
[aeiou]*
連続して出現する0回以上の母音 (英語) のいずれかに一致します。正規表現は文字がまったくない場合 (空の文字列) にも一致し、空の文字列は任意の文字列のどこにでもある可能性があるため、常に少なくとも 1 つの一致が得られます。
文字列に vowels のみが含まれていることを確認するには、正規表現をアンカーする必要があります。 with^
は文字列の先頭を示し、文字列$
の末尾を示します。
$regex = '/^[aeiou]*$/'
上記の正規表現は、入力文字列に母音のみが含まれている場合、または空の文字列である場合にのみ一致します。
一致の例: aeuuuooiiii
, (空文字列), a
.
不一致の例: aaaaaaaaaab
、#@#$
入力文字列の母音の連続したシーケンス (部分文字列) に一致させたい場合は、少なくとも 1 つの母音に一致させる必要があります+
。*
$regex = '/[aeiou]+/'
一致の例: eeee
and iiuo
in ffffeeeeddiiuo
; e
不一致のred
例: no match fornthng 2 s hr
これが初心者向けのチュートリアルとして役立つことを願っています。
はい、そうなります。[]
はいずれかのセットを意味するため、要件を満たすことになります。ただし、追加の条件がないため、これは他の文字列にも一致します。
その正規表現を使用すると、「aeiioauo」または「aaaaaaaaaaaa」、「eeeeeee」、「iiiiii」のみに一致します。
ただし、スペースにも一致するため、「aaaaeeee iiiiii」は次のように一致します。
Array
(
[0] => Array
(
[0] => aaaaeeee
[1] =>
[2] => iiiiii
[3] =>
[4] =>
)
)
それ以外の
Array
(
[0] => Array
(
[0] => aaaaeeee
[1] => iiiiii
)
)
したがって、「*」を「+」に変更することをお勧めします
FROM --> $regex = '/[aeiou]*/';
TO --> $regex = '/[aeiou]+/';
編集: これは、php で正規表現をテストするための便利なサイトです。
正規表現はデフォルトで貪欲であるため、正規表現は可能なすべての文字に一致します。ちなみに、iiiiiiなどだけでなく、aeiioなどにもマッチします。