4

^.*(?=.*[0-9]).*$

これが誰かのコードに投稿されているのを見ました。これは有効な正規表現ですか? オプションにする?前に、アイテムをオプションにすることになっていることを私は知っています。しかし、キャプチャ ブラケットの先頭にあります。どういう意味ですか?abc?c?

4

1 に答える 1

8

?単独の意味: オプションで、以前のものと一致します。

ただし、(? .. )アサーションに使用されます...

あなたの場合、(?=先読みアサーションです。つまり、(括​​弧内にあるもの)のみが続く場合に一致します。

参照


(?: ... )

非キャプチャ括弧。含まれているパターンをグループ化しますが、一致するテキストのキャプチャは提供しません。括弧をキャプチャするよりもいくらか効率的です。

(?> ... )

アトミック マッチの括弧。括弧で囲まれた部分式の最初の一致のみが試行されます。全体のパターン一致につながらない場合は、一致の検索を「(?>」の前の位置に戻します。

(?# ... )

自由形式のコメント (?# コメント )。

(?= ... )

先読みアサーション。括弧で囲まれたパターンが現在の入力位置で一致するが、入力位置を進めない場合は true。

(?! ... )

否定先読みアサーション。括弧で囲まれたパターンが現在の入力位置で一致しない場合は true。入力位置を進めません。

(?<= ... )

後読みアサーション。括弧で囲まれたパターンが現在の入力位置の前のテキストと一致し、一致した最後の文字が現在の位置の直前の入力文字である場合は true。入力位置を変更しません。後読みパターンによって一致する可能性のある文字列の長さは無制限であってはなりません (* または + 演算子はありません)。

(?<! ... )

負の後読みアサーション。括弧で囲まれたパターンが現在の入力位置の前のテキストと一致せず、一致した最後の文字が現在の位置の直前の入力文字である場合は true。入力位置を変更しません。後読みパターンによって一致する可能性のある文字列の長さは無制限であってはなりません (* または + 演算子はありません)。

于 2012-04-18T01:31:33.487 に答える