java正则表达式

闲来无事,研究了一下Java的正则表达式。

其实Java的正则表达式和其他语言的都差不多,都遵守正则表达式的规则。

下面来总结一下它的用法

. 小数点表示匹配一个任意的字符。

\\d 表示匹配一个数字,等价于[0-9]

[] 中括号表示只匹配其中的一个字符,例如[abcdef],表示abcdef中的一个字符。  t[abc]e表示可以匹配tae、tbe、tce

| 或,表示匹配几个选项中的一个

()表示可以匹配其中的选项,一般配合|使用,例如(a|bs|cag|g)表示匹配其中的任意一个元素。

* 表示0或者多个前面的元素

+ 表示1或者多个前面的元素

? 表示0或者1个前面的元素

{n} 表示匹配前面的元素要刚好n个,例如:[0-2]{9},表示9位有0-2之间的数字组成的序列。

{m,n}表示匹配前面的元素从m到n个之间都可以。例如[a-zA-Z]{2,4},表示由2-4个大小写字母组成的序列。[a-zA-Z]表示或关系,省略了|

^ 表示取反,就是不匹配这个元素,例如[^a]表示除a外的其他所有元素。

^还有限定开头的作用。$有限定结尾的作用,在表达式的中间不要随意使用这两个元素

 

好了,有了这些,来看一下经常用到的ip匹配的正则表达式该是什么。

首先是ip的第一段必须是0-255的,这里有点搞笑了,不能直接写成[0-255],没办法,只有自己拆分了

三位数的情况要特殊处理一下

25[0-5]  25开头的只能匹配250-255

2[0-4]\\d 20-24开头的可以匹配 0-9,因此用\\d

1\\d{2} 1开头的后面就随便跟了

剩下两位数的就随意了

\\d{1,2}

所以第一段的格式就应该为 ([2][5][0-5]|[2][0-4]\\d|1[0-9]{2}||\\d{1,2})

(注意: Java中的反斜杠需要转义,所以有两个反斜杠)

后面的每段前面都有一个小数点,但是在正则表达式中小数点有特殊意义的,需要用反斜杠转义一下,java中反斜杠又要转义一下,所以小数点前面有两个反斜杠。

因此后面三段为 (\\.([2][5][0-5]|[2][0-4]\\d|1[0-9]{2}||\\d{1,2})){3}

Pattern ipPat = Pattern.compile("([2][5][0-5]|[2][0-4]\\d|1[0-9]{2}||\\d{1,2})(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})){3}");

这样就可以构造一个匹配ip的java正则表达式了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值