java 正则表达式查找_java正则表达式 3 -- 查找

用正则表达式执行查找命令,则需要用正则对象,其规则和执行顺序如下:

指定为字符串的正则表达式必须首先被便以为此类的实例。然后,可将得到的正则对象匹配任意的字符串用于创建Mather对象,执行匹配所涉及的所有状态都驻留在匹配其中,所以多个匹配器可以共享同一个模式。

查找需要使用的对象:

Pattern 正则对象

Matcher 匹配器对象

因此,典型的调用顺序为:

Pattern p = Pattern.compile("正则");

Matcher m = p.matcher("aaaaaab");

boolean b = m.matchers();

匹配器要使用到的方法:

find() 通知匹配器去匹配字符串,查找符合规则的字符串。如果能查找到符合规则的字符串,返回true

group() 获取符合规则的子串

下面用代码实现对一段字符串中邮箱的查找,假设邮箱规则:@前:位数为3-18位,首位是不能为0或者下划线的字符,其他位任意字符   @后:2位以上的非下划线字符+(.com .cn .net .com.cn)

1 public classDemo2 {2 public static voidmain(String[] args) {3 //找出邮箱

4 String str = "联系邮箱:老王-1543644@qq.com;老赵-zhao@sina.com;"

5 + "Tim-timEmail@gg.net;大明-ming@safe.com.cn;盖茨-gaici@ma.cn";6

7 String reg = "[a-zA-Z1-9]\\w{2,17}@[a-zA-Z0-9]{2,}(\\.(com|cn|net)){1,2}";8 //指定为字符串的正则表达式必须首先被便以为此类的实例

9 Pattern p =Pattern.compile(reg);10 //使用正则对象匹配字符串用于产生一个mather对象

11 Matcher m =p.matcher(str);12

13 while(m.find()) {14 System.out.println(m.group());15 }16 }17 }

补充:

加入对字符串“ri zhao xiang lu sheng zi yan”查找,查找其中的两个字母组成的子串

如果直接把正则写成reg="[a-zA-Z]{2}",那么查询结果就会如下:

ri

zh

xi

lu

sh

zi

ya

可以看到,不仅查到了组成字符个数为两个的单词,还查到了多个的并且剪切到了前两位。此时就要加入边界匹配器:

15e338562564a844f0f8d1f0bc00fb50.png

那么我们新的正则就应该是reg="\\b[a-zA-Z]{2}\\b" ,执行结果为:

ri

lu

zi

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值