java正则匹配括号和逗号⽰例_正则表达式唯⼀两个不⽤转义的元字符——左⼤括号、右⼤括号...
正则表达式元字符,如果要匹配这个元字符本⾝,前⾯要加反斜杠转义(Java是加2个反斜杠)。
但是左⼤括号 { 和右⼤括号 } 不⽤转义也可以匹配。
我们⽤Notepad++演⽰⼀下。
⽀浩宇的姓名:{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、正整数、0和⼀个逗号、正整数和⼀个逗号,即
{0}
{3}
{0,}
{3,}
正则表达式⼤括号前⾯不⽤加转义符号。如果有可能是这四种才会把⼤括号视为元字符。如果能确定不是这四种形式,则正则表达式⼤括号前⾯不⽤加转义符号
这四种形式,才会把⼤括号视为元字符
形式,那就要加转义符号。
如果是单独⼀个左⼤括号跟正整数, 正整数跟单独⼀个右⼤括号,也不属于这四种形式,不⽤加转义符号。
IntelliJ IDEA的提⽰
在IntelliJ IDEA⾥⾯,如果在右⼤括号前⾯加转义符号,IDE会提⽰这个转义符号是多余的:Redundant character escape '}' in RegExp
可以改成:
这是正则表达式的另⼀个语法。当⼀对⼤括号(或中括号)出现时,只要左边的括号加了转义符号,右边的括号加不加都⼀样,引擎都认为是要转义的。这个语法仅限于中括号和⼤括号,我试了⼩括号不是这样,⼩括号必须左右两边都加转义符号。
我们没有必要去记这些偏门的语法。 最简单的做法是,全都加上转义符号,绝对稳妥(也就是说,我这篇⽂章根本没必要看)。IDE的提⽰也不是100%准确的,听不听它的提⽰,取决于我的⼼情。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。