能否请您解释以下正则表达式的含义:[^\\p{LD}\\s]
。我知道^
表示否定,\s
表示空白,但是我无法将所有内容都收集在一起,尤其是这部分与{LD}
在一起。你能帮忙吗?
这是以下代码的一部分:
map(x->x.replaceAll("[^\\p{LD}\\s]",""))
答案 0 :(得分:1)
\p{}
是用于编写Unicode正则表达式的语法。有关更多信息,请参见regular-expressions.info。
在该页面上,可以阅读:
\ p {L}匹配类别“字母”中的单个代码点。
因此,[^\p{L}\s]
将匹配空格或unicode字符(属于“字母”类别)(例如,将不匹配以下任何一项:a
,à
(U + 00E0 )或あ
(U + 3042))。
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,,(,+ ...