以下の私の正規表現は、長さが8〜10の大文字の単語を除外することになっています。ここで0〜2の数字が表示される場合があります。それは私のすべてのテストで機能していますが、何らかの理由で下の文字列に引っかかってしまいました。そしてn.group(0)
、一致した「単語」の代わりに空の文字列のみが含まれます。
static final Pattern PATTERN =
Pattern.compile("\\b(?=[A-Z\\d]{9,10}\\b)(?:[A-Z]*\\d){0,2}[A-Z]*\\b");
Matcher n = LONG_PASSWORD.matcher("foo ID:636152727 bar");
while (n.find()) {
String s = n.group(0);
resultArrayList.add(s);
}
パターンが一致するのはなぜID:636152727
ですか?
私が除外したいいくつかの例(これは機能しています):
- AAAAAAAAAA
- 1AAAAAAAAA
- 1AAAAAAAA1
等...