整数不能小于0的正则表达式_正则表达式唯一两个不用转义的元字符 —— 左大括号、右大括号...

正则表达式元字符,如果要匹配这个元字符本身,前面要加反斜杠转义(Java是加2个反斜杠)。

但是左大括号 { 和右大括号 } 不用转义也可以匹配。

我们用Notepad++演示一下。

038a0622de86d813ce9304c78ab54b91.png
支浩宇的姓名:{haoyuName},支浩宇的ID:{haoyuId},备注信息:{notes}
支浩宇的姓名:[haoyuName],支浩宇的ID:{haoyuId},备注信息:{notes}
支浩宇的姓名:(haoyuName),支浩宇的ID:{haoyuId},备注信息:{notes}
zhihaoyu{3}
zhihaoyu{32}
zhihaoyu{0}
zhihaoyu{00}
zhihaoyu{03}
zhihaoyu{3,}
zhihaoyu{0,}
zhihaoyu{3
zhihaoyu{32
zhihaoyu0}
zhihaoyu3,}
zhihaoyu0,}
zhihaoyu{0,,}
zhihaoyu{-3}
zhihaoyu{3.2}
zhihaoyu{big}
zhihaoyu{32big}
zhihaoyu{3big2}
zhihaoyu{0x1}

先演示中括号和小括号,

查找正则表达式:[haoyu

结果:无效的正则表达式

查找正则表达式:(haoyu

结果:无效的正则表达式

查找正则表达式:[haoyuName]

结果:匹配haoyuName的其中一个字母

查找正则表达式:(haoyuName)

结果:匹配haoyuName整个单词,不包括括号

现在演示大括号,

查找正则表达式:{haoyu

结果:匹配{haoyu

查找正则表达式:{haoyu

结果:匹配{haoyu

查找正则表达式:Name}

结果:匹配Name}

查找正则表达式:Name}

结果:匹配Name}

查找正则表达式:{haoyuName}

结果:匹配{haoyuName},包括大括号

查找正则表达式:{haoyuName}

结果:匹配{haoyuName},包括大括号

从以上演示可知,大括号前面加不加转义符号,匹配的结果是一样的。大括号被视为普通字符,而不是元字符。

以下这几个测试用例,大括号被视为元字符,大括号要加转义符号才能匹配到,

zhihaoyu{3}
zhihaoyu{32}
zhihaoyu{0}
zhihaoyu{00}
zhihaoyu{03}
zhihaoyu{3,}
zhihaoyu{0,}

以下这几个测试用例,大括号被视为普通字符,不用加转义符号,直接能匹配到,

zhihaoyu{3
zhihaoyu{32
zhihaoyu0}
zhihaoyu3,}
zhihaoyu0,}
zhihaoyu{0,,}
zhihaoyu{-3}
zhihaoyu{3.2}
zhihaoyu{big}
zhihaoyu{32big}
zhihaoyu{3big2}
zhihaoyu{0x1}

只有当一对大括号中的内容是0、正整数、0和一个逗号、正整数和一个逗号,

{0}

{3}

{0,}

{3,}

这四种形式,才会把大括号视为元字符。如果能确定不是这四种形式,则正则表达式大括号前面不用加转义符号。如果有可能是这四种形式,那就要加转义符号。

如果是单独一个左大括号跟正整数, 正整数跟单独一个右大括号,也不属于这四种形式,不用加转义符号。

IntelliJ IDEA的提示

在IntelliJ IDEA里面,如果在右大括号前面加转义符号,IDE会提示这个转义符号是多余的:Redundant character escape '}' in RegExp

00e35a23149d8a8ca41881ecb18e83f2.png

75c2907e48804dd6795cca2d1da15604.png

可以改成:

c184fa9f7acfa175144833b4f631622c.png

这是正则表达式的另一个语法。当一对大括号(或中括号)出现时,只要左边的括号加了转义符号,右边的括号加不加都一样,引擎都认为是要转义的。这个语法仅限于中括号和大括号,我试了小括号不是这样,小括号必须左右两边都加转义符号。

我们没有必要去记这些偏门的语法。 最简单的做法是,全都加上转义符号,绝对稳妥(也就是说,我这篇文章根本没必要看)。IDE的提示也不是100%准确的,听不听它的提示,取决于我的心情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值