以下のような正規表現において、それぞれ部品ごと()ごととか
にわけて、解説していただきたいです。
^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[0-9A-Za-z]{8,}$
?= ってどういう意味なんでしょうか。
また、(?=.*[0-9]) は、どのように解釈したらいいですか。
?が0または1回だけの文字で、=はなんですかね。
.*は、0個以上の任意の1文字で、その後、[0-9]0から9の数字と。。
まとめると、どういうことなんですかね。
最後に、半角数字と半角英字、半角記号がそれぞれ一文字以上含む正規表現を
教えてください。
どうぞよろしくお願いしますっ
(?=pattern) はセットで用いられ、先読みを実現します。
先読みとは、最初にpatternが出現する部分にマッチするものです。
ご質問の正規表現は、先読みの効果がありません。
たとえば
^(.*)(?=[A-Z].)
という正規表現であれば、(?=[A-Z].)は最初に英大文字が出現する部分にマッチします。すなわち、^(.*) は文字列の先頭から最初に英大文字が出現するまで(英大文字は含まない)にマッチします。
繰り返しますが、ご質問の正規表現は奇妙な構文なので、、その効果は説明できません。
(?=[0-9].])(?=[A-Za-z].)(?=[!-~].)
まとめると、どういうことなんですかね。
「半角数字と半角英字をそれぞれ一文字以上含む、八文字以上の文字列」ということです。
?= ってどういう意味なんでしょうか。
(?=χ) は、「幅ゼロの肯定先読み」という表現です。
正規表現χを満たす文字列の直前の文字列の隙間を指します。
「隙間」というのは、文字(or 文字列)そのものを指しません。
グループとしては、行頭の ^ や、行末の $ と同じものです。
(?=.*[0-9]) は、どのように解釈したらいいですか。
.*[0-9] が任意の文字列の後に数字がある文字列だということは、分かりますよね。
その文字列の先頭の隙間を指しています。
最後に、半角数字と半角英字、半角記号がそれぞれ一文字以上含む正規表現を
教えてください。
半角記号に、何を含めるかに寄りますが、仮に [-+/*] を記号としましょうか。
文字列全体が、それに合致する正規表現は、以下のようになると思います。
^(?=.*[-+/*])(?=.*[0-9])(?=.*[A-Za-z])[-+/*0-9A-Za-z]+$
文字列の一部で良いのであれば、行頭の ^ と、行末の $ を外したものになります。
ありかどうございますっ!
うーん自分には、隙間の意味がよく理解できませんが、解決の糸口はおかげさまでみつけられましたっ!
肯定先読みなどについて、言及されてませんね。
「削除」する?
回答ありかどうございましたっ!
(?=pattern) はセットで用いられ、先読みを実現します。
先読みとは、最初にpatternが出現する部分にマッチするものです。
ご質問の正規表現は、先読みの効果がありません。
たとえば
^(.*)(?=[A-Z].)
という正規表現であれば、(?=[A-Z].)は最初に英大文字が出現する部分にマッチします。すなわち、^(.*) は文字列の先頭から最初に英大文字が出現するまで(英大文字は含まない)にマッチします。
繰り返しますが、ご質問の正規表現は奇妙な構文なので、、その効果は説明できません。
(?=[0-9].])(?=[A-Za-z].)(?=[!-~].)
ありかどうございますっ!
おかげさまで、大体理解できましたっ!
ありかどうございますっ!
2012/12/27 00:22:00おかげさまで、大体理解できましたっ!