私は一致するようにしようとしているユーザー入力がありますが、'^-
などの特殊文字は除外します。特定の文字セットを一致または「無視」することが可能かどうかを知りたいと思います。したがって、リストに"^-"
が含まれていて、用語がPRM
だった場合、P^^R---^M
は一致しますがPROM
はO
が「許可」文字のセットではないため一致しません。用語内の任意の数の特定の文字を照合することは可能ですか?
これは正規表現で可能ですか?
私は一致するようにしようとしているユーザー入力がありますが、'^-
などの特殊文字は除外します。特定の文字セットを一致または「無視」することが可能かどうかを知りたいと思います。したがって、リストに"^-"
が含まれていて、用語がPRM
だった場合、P^^R---^M
は一致しますがPROM
はO
が「許可」文字のセットではないため一致しません。用語内の任意の数の特定の文字を照合することは可能ですか?
これは正規表現で可能ですか?
Java 8では、String.join
を使用して、1つまたは複数の特殊文字を表す文字グループ([^-]*
など)を表す文字グループで、正規表現の特殊文字をエスケープして、個々の文字を結合することができます。
String term = "PRM";
String special = "^-";
String delimiter = "[" + Pattern.quote(special) + "]*";
String regex = String.join(delimiter, term.split(""));
System.out.println(Pattern.matches(regex, "PROM")); // --> false
System.out.println(Pattern.matches(regex, "P^^R---^M")); // --> true
代わりに、""
でもreplaceAll
特殊文字を可能性と平等のためのチェック:
System.out.println(term.equals("PROM".replaceAll(delimiter, ""))); // --> false
System.out.println(term.equals("P^^R---^M".replaceAll(delimiter, ""))); // --> true
は疑問がそれを必要とする場合言い換えて幸せdownvotesの説明を、大好きです。 – kgrad
それは可能ですが、clunkyです。あなたは 'P [^ - ] * R [^ - ] * Mのような何かをしなければならないでしょう。はるかに良い解決策は正規表現を適用する前に文字列からそれらの文字を削除することです。 –
私はおそらくそれを行うことができますが、私は文字列を保持する必要がある、正規表現は私の人生を楽にするだろうが、適切でない場合私は上に移動することができます。 – kgrad