正则表达式[^ \ p {LD} \ s]是什么意思?

时间:2019-06-23 10:50:42

标签: java regex

能否请您解释以下正则表达式的含义:[^\\p{LD}\\s]。我知道^表示否定,\s表示空白,但是我无法将所有内容都收集在一起,尤其是这部分与{LD}在一起。你能帮忙吗?

这是以下代码的一部分:

map(x->x.replaceAll("[^\\p{LD}\\s]",""))

4 个答案:

答案 0 :(得分:1)

\p{}是用于编写Unicode正则表达式的语法。有关更多信息,请参见regular-expressions.info

在该页面上,可以阅读:

  

\ p {L}匹配类别“字母”中的单个代码点。

因此,[^\p{L}\s]将匹配空格或unicode字符(属于“字母”类别)(例如,将不匹配以下任何一项:aà(U + 00E0 )或(U + 3042))。

Demo

LD不是有效的类别,将引发错误。

您可以看到支持此语法here的引擎。

答案 1 :(得分:1)

LD代表字母或数字,因此\p{LD}表示任何字母或数字分类的Unicode字符。 \s表示任何空格字符。

您需要使用\转义\

^两者都是否定的。

在Java中测试:

System.out.println(".,:;-_#*'´`^° СЕНИШИН ЮРІЙ ВОДИТЕЛЬ abdsf 01152646".replaceAll("[^\\p{LD}\\s]", ""));

答案 2 :(得分:0)

编辑:

以前的正则表达式为[^\p{LD}\s],因此无效

对于:[^\\p{LD}\\s]

匹配句开头为:\p{LD}\s

因此,基于已编辑的问题,将所有匹配项替换为前缀,例如:\p{LD}\s为空

答案 3 :(得分:0)

这意味着[]中不包含的任何字符:

[^\\p{LD}\\s]
  • ^-[]
  • 中不包含的字符
  • \\-表示\
  • 以及其他所有字符:p { L D } }

例如匹配项: w,$,y,6,,(,+ ...