1

次の正規表現を使用して、長さが4で、数字が1つで大文字が3つある単語を照合します。

\b(?=[A-Z]*\d[A-Z]*\b)[A-Z\d]{4}\b

私が知りたいのは、式を変更して、長さが10で、0〜2の数値を含む単語を除外する方法です。

\b(?=[A-Z]*\d[A-Z]*\b)[A-Z\d]{10}\b

これは1つの番号の出現に対して機能しますが、0と2の番号もフィルタリングするように拡張するにはどうすればよいですか?

サンプル: http: //regexr.com?32u40

4

1 に答える 1

4

長さチェックを先読みに入れます。

\b(?=[A-Z\d]{10}\b)(?:[A-Z]*\d){0,2}[A-Z]*\b

説明:

\b           # Start at a word boundary
(?=          # Assert that...
 [A-Z\d]{10} # 10 A-Z/digits follow
 \b          # until the next word boundary.
)            # (End of lookahead)
(?:          # Match...
 [A-Z]*      # Any number of ASCII uppercase letters
 \d          # and exactly one digit
){0,2}       # repeat 0, 1 or 2 times.
[A-Z]*       # Match any number of letters
\b           # until the next word boundary.
于 2012-11-25T20:09:23.063 に答える