【发布时间】:2013-12-18 02:57:23
【问题描述】:
我正在尝试使用 Java 正则表达式匹配器进行搜索和替换。但是,在它无法匹配某个字符串后,我注意到表达式“.*”似乎无法匹配某些 Unicode 字符(在我的情况下,它是一个 \u2028 LINE SEPARATOR 字符)。
这就是我目前所拥有的(将 XML 元素与中间的任何文本匹配):
String segSourceSearch = "<source(.?)>(.*?)</source>";
String segSourceReplace = "<source$1>$2</source><target$1>$2</target>";
myString = myString.replaceAll(segSourceSearch, segSourceReplace);
基本上,这应该做的是复制元素。
但是如何修改正则表达式(.*?) 以匹配<source> 和</source> 之间的任何Unicode 字符? Java中有内置模式吗?如果没有,ICU4J 中有什么可以使用的吗? (我无法在 ICU4J 中找到正则表达式匹配器)。
【问题讨论】:
-
看这里:[类似案例][1] [1]:stackoverflow.com/questions/10894122/…
-
非常感谢您的提示。但是这个解决方案是为了匹配来自 Letter 类的字符。这将不匹配非字母字符,例如行分隔符。
-
@marw,您的正则表达式中似乎有错字。我很确定
(.?)应该是(.*?)。