正则表达式匹配所有内容,包括unicode标点符号

时间:2016-02-02 08:26:35

标签: java regex unicode

我正在尝试匹配一些文本,其中可能包含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。

1 个答案:

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