-1

私は正規表現が本当に苦手なので、あなたが私を助けてくれることを願っています:

odfドキュメントを開き、指定されたものkeywords(のkeys)を検索し、これらのキーワードを他のコンテンツ(ハッシュマップの値hashmap)に置き換えることができるクラスを作成しました。odf-filesこれでクラスは終了しましたが、正規表現の部分だけが欠落しています。キーが「FILE」や「REPLACETHIS」のような文字列であれば、すべてが機能します。ただし、「{{File_1}}」、「」、「!replace this!」などの文字列も置き換える必要があります。等々。これらの文字列はユーザ​​ーが選択できるため、可能性は無限大です。これらの文字列は、他の文字列の一部にすることもできます。たとえば、「this is so [replacethis]metext」のようになります。

私が何を望んでいるか、そしてこれが可能であることをあなたが理解してくれることを願っています。

-e-はい、使用しているライブラリにはPattern.compileオブジェクトが必要なため、正規表現を使用する必要があります

4

2 に答える 2

2

私見、あなたがやりたいと思うことをする最短の方法は(あなたは投稿の下のコメントでそれを確認しました):

Pattern pattern = Pattern.compile(Pattern.quote(yourStringToBeReplaced));

このように、文字は特別な正規表現の意味を失い、ユーザーは好きなものを入力できます。

これらのメソッドの詳細については、JavaDocを参照してください。

于 2013-01-23T16:59:22.723 に答える
-1

私が理解している限り(私が間違っている場合は、遠慮なく訂正してください)、あなたの主な問題は、特別な正規表現の意味を持つキャラクターです。パターンをコンパイルする前に、これらの文字をエスケープしてみませんか?

myPattern = "some user defined word with { strange characters";
myPattern = myPattern.replaceAll( "\\{", "\\{" );
myPattern = myPattern.replaceAll( "\\}", "\\}" );
myPattern = myPattern.replaceAll( "\\.", "\\." );
...
Pattern regex = Pattern.compile( myPattern );
于 2013-01-23T16:39:23.167 に答える