Javaのジェネリック型パラメータのための正規表現を必要とするので、私はして試してみた:
^[A-Z](([A-Z_0-9])*[^_])?$
は、タイプ名に大文字と数字のすべてが1文字以上必要であることを意味します。
セパレータとして '_'を使用しますが、最後には使用しません。fe 「TT_A9」
しかし、私の驚きに私の正規表現のツールは、「AA」または「AAA」または私がチェックするために、簡単なテストクラスを書いた
「AA-」の一致を示しています
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTestPatternMatcher {
public static final String test = "AA-";
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^[A-Z](([A-Z_0-9])*[^_])?$");
Matcher matcher = pattern.matcher(test);
System.out.println("Matches ? " + matcher.matches());
}
}
出力:
AA- Matches ? true
それは、AAAのためにも事実だが、私は正規表現^[A-Z](([A-Z_0-9])*[^_a-z-])?$
を使用しますが、私は使用する必要がなぜ私は理解していない場合AA_
のは作品ではありません「 -z 'と' - 'を除外として、
大文字のみを探しているときに!
'[^ _]はハイフンを含む「アンダースコアを除く任意の文字」を意味します。 – chrylis
@chrylis良いキャッチ、古典的なつかみ;-)正規表現の私の知識は少し錆びています – Rebse