Java:查找文档中的任何字符串

时间:2013-01-23 16:23:20

标签: java regex

我对正则表达式非常不好,所以我希望你能帮助我:

我写过一个可以打开odf文档的类,搜索某个keywordskeys中的hashmap)和替换< / em>这些关键字的内容为其他odf-files(hashmap的值)。到目前为止,该类已完成,只缺少正则表达式部分。如果键只是“FILE”或“REPLACETHIS”之类的字符串,则一切正常。 但我还需要能够替换像“{{File_1}}”,“”,“!替换这个!”这样的字符串!等等。这些字符串可以由用户选择,因此可能性是无穷无尽的。 这些字符串也可以是其他字符串的一部分,例如:“这就是[替换此]我的文本”。

我希望你明白我的魔杖,这甚至是可能的。

-E- 是的,我必须使用正则表达式,因为我正在使用的库需要一个Pattern.compile对象

2 个答案:

答案 0 :(得分:2)

恕我直言,做我认为你想做的最短路的是(你在帖子下方的评论中证实了这一点):

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

这样,字符将丢失其特殊的正则表达式含义,用户可以输入他们想要的任何内容。

JavaDoc中详细了解这些方法。

答案 1 :(得分:-1)

据我了解(如果我错了,请随时纠正我)你的主要问题是具有特殊正则表达式的字符。为什么不在编译模式之前逃避这些字符?

myPattern = "some user defined word with { strange characters";
myPattern = myPattern.replaceAll( "\\{", "\\{" );
myPattern = myPattern.replaceAll( "\\}", "\\}" );
myPattern = myPattern.replaceAll( "\\.", "\\." );
...
Pattern regex = Pattern.compile( myPattern );