[Ava]Stringの一致ではなくPattern
Stringでの一致
Javaでは、正規表現を使用して、特定の条件に一致する文字列を決定します.次に、数値の有無を判断する正規式の例を示します.
private void validateNumber(final String string) {
if (!string.matches("-?[0-9]+")) {
// 예외처리
}
}
正規式に関する情報はここです。で確認することができる.上記のコードは負数正数であってもよく、0から9の間の値は1つ以上であってもよいと判断する.つまり、数字を判断する方法です.しかしStringが提供するマッチングは内部でPatternオブジェクトを生成する.
public boolean matches(String regex) {
return Pattern.matches(regex, this);
}
String.照合を使用して検証する場合は、その都度Patternオブジェクトが生成されます.同じメソッドが呼び出されるたびに、新しいオブジェクトが生成され、最終的には불필요한 객체가 여러번 생성
が生成されます.作成回数が多いほど、パフォーマンスへの影響が大きくなります.作成後に再利用しないPatternオブジェクトがゴミ収集の対象となります.Pattern
Patternで検証する方法は2つあります.
1.正規表現と検証値を入力し、即時検証
Pattern.matches(regex, input);
Patternのmatchesの内部コードは次のとおりです.Patternオブジェクトの正規表現のコンパイルを入力すると、Matcherオブジェクトが生成され、一致します.public static boolean matches(String regex, CharSequence input) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
return m.matches();
}
2.コンパイル後の検証直接コンパイルして検証することもできます.
Pattern.compile(regex).matcher(input).matches();
public static Pattern compile(String regex) {
return new Pattern(regex, 0);
}
コンパイル時に新しいPatternオブジェクトが生成されます.同じ正規表現を複数回使用する必要がある場合は、컴파일한 Pattern 객체를 미리 생성해둔 후 검증하는 과정만 호출
を使用してパフォーマンスを向上させることができます.これもjava公式ファイルでお勧めの方法です.If a pattern is to be used multiple times, compiling it once and reusing it will be more efficient than invoking this method each time.
これは、Patternを用いて確認が数字であるコードを実装する例である.静的に宣言し、オブジェクトが不要になるたびに生成されないようにします.
public class Regex {
public static final Pattern NUMBER = Pattern.compile("-?[0-9]+");
}
コメントサイト
Reference
この問題について([Ava]Stringの一致ではなくPattern), 我々は、より多くの情報をここで見つけました https://velog.io/@rudnf003/Java-String-의-matches-대신-Patternテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol