【发布时间】:2014-03-27 03:36:31
【问题描述】:
我有一个正则表达式,它基本上将所有绿色文本保持在特定模式之上(保存 group1)。
一切正常!
现在,如果在每个 java 解析时有 unicode 字符。下面的 m.find() 抛出一个超出范围 -2 的异常索引。有问题的两个字符是:
文字[23]55357
文字[24]56561
如下所示:Text String Value
String text = "Hi\n\nyo keep this here\n\n????Unicode b4 here\n\nyo\ncut me:\n\nThis should be deleted";
System.out.println(text);
Pattern PATTERN = Pattern.compile("^(.+?)\\byo\\b(?:(?!cut me:|yo).)*cut me:", Pattern.DOTALL);
Matcher m = PATTERN.matcher(text);
if (m.find()) {
text = m.group(1);
System.out.println(text);
}
所以,我的问题是为什么会这样扔?
我尝试在字符串上使用 javaescape (apache utils),它可以防止抛出,但如果我转义它,我的正则表达式查找不匹配。
当然,如果您删除 unicode 字符,它就可以正常工作。
【问题讨论】: