私が必要とするのは、与えられた文字列が与えられた正規表現と部分的に一致するかどうかを調べることです。たとえば、正規表現ab[0-9]c
の場合、文字列 "a"、 "ab"、 "ab3"、および "b3c"は "一致"しますが、文字列 "d"、 "abc"、または "a3c"は一致しません。私がしてきたのは、曖昧なa(?:b(?:[0-9](?:c)?)?)?
です(これは、部分的に一致する部分、特に一致する部分でのみ機能します)が、これはAPIの一部であるため、より直観的な一致する正規表現を入力する方法。Javaで部分正規表現マッチを行うためのエレガントな方法はありますか?
説明があまり明確でない場合(これがないかもしれないことがわかっています)、これはテキストボックスのテキスト入力の検証に使用されます。私は、無効な文字列になるすべての編集を防止したいが、完全に入力されるまで、それは一致しないので、正規表現と文字列を一致させることはできません。たとえば、上記の正規表現(ab[0-9]c
)を使用して、「a」を入力しようとすると、文字列「a」が正規表現と一致しないため、許可されません。
基本的には、正規表現で動作する逆startsWith()
のようなものです。 (new Pattern("ab[0-9]c").startsWith("ab3")
はtrue
を返す必要があります)
アイデアはありますか?
FYI: 'a(?:[0-9](?: c)?)?)'?は、 "a"を含む任意の文字列、例えば "jazz " '^ a(?:[0-9](?: c)?)?)?$'を使って文字列全体をマッチングさせたいとします。 – Kip
クライアントが 'ab [0-9] c'のような単純な正規表現を使用していますか、より複雑なマッチング(サブグループとの組み合わせ)が必要でしょうか? – Kip
おっと...ええ、^と$は正規表現に自動的に追加されます。そのため、私はそれらを追加することを忘れてしまいました。ありがとうございます。そして、いいえ、正規表現はそれほど簡単ではありませんが、サブグループを必要とするほどではありませんが、かなり複雑になる可能性があります。 – Tonio