-1

我真的不擅长正则表达式,所以我希望你能帮助我:

我写了一个类,它可以打开一个odf文档,搜索一些给定keywords的(keys在 a 中hashmap)并将这些关键字替换odf-files为其他的内容(哈希图的值)。课程到此结束,只是缺少正则表达式部分。如果键只是像“FILE”或“REPLACETHIS”这样的字符串,那么一切正常。但我还需要能够替换像“{{File_1}}”、“”、“!替换这个!”这样的字符串。等等。这些字符串可以由用户选择,因此可能性是无穷无尽的。这些字符串也可以是其他字符串的一部分,例如:“this is so[replace this]me text”。

我希望你明白我想要什么,这甚至是可能的。

-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 回答