0

そのうちの1つが絶えず変化する単語のペアを一致させたい(文字列の配列をループする)。問題は、この単語にメタ文字が含まれている可能性があり、どのメタ文字が含まれているかわからないため、手動でエスケープするのは少し問題です。Javaですべてのメタ文字をすでにエスケープしている文字列のパターンを構築する方法はありますか?

4

2 に答える 2

1

'単語の一致'によって示されるように、正規表現について具体的に話している場合、必要なメソッドはPattern.quoteです。

より一般的な意味では、ターゲットの構文がわからない場合、「メタ文字」を自動的にエスケープする方法はありません。原則として、どの文字も文字通りではない特別な意味を持つ可能性があり、それをエスケープする方法はターゲットの構文に完全に依存します。正規表現では、前に円記号が付いていますが、あなたの質問では、正規表現について話しているのかどうかは明確ではありません。

于 2012-05-02T08:10:34.683 に答える
0

メタ文字を含む文字列がありますが、正確にどのメタ文字かわかりません。しかし、ある意味で、メタ文字が何であるかを知っています。

文字列に表示される可能性のあるすべてのメタ文字を知っている場合は、それらをグループにリストするだけです:([\*abc\$\.\,\s]このグループは、正規表現で、この文字の1つ、たとえば、スター、a、b、c、バックス($)、ポイントに会うことができることを意味します、コンマ、空白)。また、^[^....])を使用してロジックを反転することもできます。

于 2012-05-02T08:11:37.130 に答える