为了账号安全,请及时绑定邮箱和手机立即绑定

Java RegEx元字符(。)和普通点?

Java RegEx元字符(。)和普通点?

撒科打诨 2019-09-02 15:19:28
在Java RegEx中,如何.在任何句子中找出(点)元字符和普通点之间的区别。如何处理这种情况的其他元字符太像(*,+,/d,...)
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

如果您希望正则字符中具有特殊含义的点或其他字符是普通字符,则必须使用反斜杠将其转义。由于Java中的正则表达式是普通的Java字符串,因此您需要转义反斜杠本身,因此需要两个反斜杠,例如\\.


查看完整回答
反对 回复 2019-09-02
?
萧十郎

TA贡献1815条经验 获得超12个赞

其他成员提出的解决方案对我不起作用。

但我发现了这个:

在java regexp写中转义一个点 [.]


查看完整回答
反对 回复 2019-09-02
?
aluckdog

TA贡献1847条经验 获得超7个赞

Perl样式的正则表达式(Java正则表达式引擎或多或少基于它)将以下字符视为特殊字符:


.^$|*+?()[{\在字符类之外有特殊含义,


]^-\在字符类([...])中有特殊含义。


所以你需要根据上下文(或者在字符类的情况下,将它们放在不能被误解的位置)来逃避那些(并且只有那些)符号。


不必要地转义其他字符可能会起作用,但是一些正则表达式引擎会将其视为语法错误,例如\_会在.NET中导致错误。


其他一些会导致错误的结果,例如在Perl中\<被解释为文字<,但在egrep其中意味着“单词边界”。


所以写-?\d+\.\d+\$匹配1.50$,-2.00$等,并[(){}[\]]为一个字符类匹配各种支架/支架/括号。


如果需要将用户输入字符串转换为正则表达式安全表单,请使用java.util.regex.Pattern.quote。



查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 684 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信