我正在尝试匹配一些文本,其中可能包含unicode字符,包括特殊的标点符号,如Java中的\u0085
。
当我做
之类的事情时Matcher testMatcher = Pattern.compile("(.+)", Pattern.UNICODE_CHARACTER_CLASS).matcher("test text up \u0085 after");
我得到了#34;测试文字的匹配",没有标点符号,但是我希望匹配所有内容。我该怎么做?
另请参阅demonstration in the regex101 tool。
更新:我确实尝试了((?:\P{M}\p{M}*+)+)
as discussed at regular-expressions.info,但它似乎不适用于Java。
答案 0 :(得分:3)
该符号属于 Cc - 其他,控制类别。
您需要添加Pattern.DOTALL
修饰符才能与之匹配。或者在模式开始处附加(?s)
。
一般类别:抄送 - 其他,控制
规范组合类:0 - 间距,分割,封闭,重新组合,&西藏人加入了 双向类别:B - 段落分隔符
Unicode 1.0名称: NEXT LINE(NEL)
Unicode版本:1.1
正如文字:
十进制:133
HTML转义:...
网址转义:%C2%85
请参阅details here
这是一个IDEONE demo
Matcher testMatcher = Pattern.compile(".+", Pattern.DOTALL | Pattern.UNICODE_CHARACTER_CLASS).matcher("test text up \u0085 after");
if (testMatcher.find()){
System.out.println(testMatcher.group(0));
} // => test text up after