正規表現を使用するときに「?=」は何をするのか誰か教えてもらえますか?これが私が解読しようとしているコードフラグメントの例です:
password.matches("(?=.*\\d.*\\d.*)^[\\w]{8}.*$");
ありがとう。
それは前向きな先見です。その特定の表現では、パスワードには少なくとも2桁の数字(\d
)が必要であると言っています。
また、先読みは入力を消費せず、単なるアサーションであることに注意してください。
たとえば、正規表現では、先読み部分((?=.*\\d.*\\d.*)
)password
は、に少なくとも2桁の数字が含まれていることを表明し、式の残りの部分は文字列全体を消費[a-zA-Z_0-9]
し、最初に少なくとも8つの単語文字(つまり、)を一致させようとします。ストリング。
これは先読みです。位置の後に指定された式が続くかどうかを確認するゼロ幅の一致。
http://www.regular-expressions.info/lookaround.html
あなたのシナリオでは、次のような文字列を探しています。
先読みは実際には試合の一部ではありません。\b
単語の境界( )または文字列の先頭()のように動作し^
ます。