传递正则表达式的正确格式是什么!Java字符串拆分方法中的[,?.\\'@+]?
我有枪。在我的
str.split("![,?.\_'@+]")
。但是,在编译程序时,它会导致一个错误,即\_
是非法转义字符。我试图删除它,只传递![,?.'@+]
,但字符串并没有被拆分,即使它包含?, @ and .
字符
你可以在下面搜索框中键入要查询的问题!
我有枪。在我的
str.split("![,?.\_'@+]")
。但是,在编译程序时,它会导致一个错误,即\_
是非法转义字符。我试图删除它,只传递![,?.'@+]
,但字符串并没有被拆分,即使它包含?, @ and .
字符
# 1 楼答案
您需要将符号放入字符类中,并在那里转义
[
、]
和\
:[!\\[,?.\\\\_'@+\\]]
字符类匹配指定集中的单个字符(!
,[
,,
,?
,.
,\
,_
,'
,@
,+
,或]
)注意
_
不是一个特殊的regex元字符,不需要(也不应该)转义。如果还需要向character类添加\
字符,则需要使用4个反斜杠来匹配输入中的文字\
请注意,每当需要向这个正则表达式添加连字符时,都应该将其放在字符类的开头或结尾。请参阅Splitting string using multiple delimiters Java,它详细介绍了如何在Java正则表达式中匹配字符类中的连字符的问题
如果要删除结果数组中的任何空元素,请替换字符串开头的所有拆分字符,并对字符类应用
+
(一个或多个出现)量词(以下是更新的答案,其中在字符类中添加了空格):