Java正则表达式使用

正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本–百度百科。无论用什么语言编程,在处理字符串的匹配问题上,正则表达式是一个强大的工具。这里不会去介绍正则表达式的语法规则(网上很多,自行搜索即可),而是就一个实际的场景体现Java中如何使用正则表达式。

  • Java使用正则表达式对手机号相关的字符串进行操作
    • 代码示例(代码注释超详细~)
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest{
    public static void testphone() {
        //手机号正则表达式(未要求字符串为11位,如需要在正则表达式前加入“^”,在正则表达式末尾加入“$”)
        String reg = "(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}";
        String phone = "13393518460rtyerty18293518460rrt";
        Pattern p = Pattern.compile(reg);  //编译正则表达式
        Matcher m = p.matcher(phone);  //正则表达式进行字符串匹配
        while(m.find()) {
            System.out.println(m.start()+" "+m.end());  //输出匹配的字符串的首索引和尾索引(前开后闭)
            System.out.println(m.group());        //group()输出匹配的字符串
        }
        // 注意find()函数使用后索引自动移到下一匹配字符串位置,上面输出匹配子串后故需要重新模式匹配
        m = p.matcher(phone);  //正则表达式进行字符串匹配
        boolean rs1 = m.find();  //find()方法输出是否匹配成功(无需匹配全部字符串)
        System.out.println(rs1);
        boolean rs2 = m.matches();  //matches()方法输出是否匹配成功(匹配全部字符串)
        System.out.println(rs2);
        phone=phone.replaceAll(reg,"\\*$0\\*");  // 将匹配到的字符串进行替换,$0表示匹配的字符串自身
        System.out.println(phone);
        //如果正则表达式有分组,使用"()"表示,则group(i)可以得到分组匹配到的信息,例如号码前三位前缀采用分组,分组得到“133”和“182”两个满足条件的前缀
        m = p.matcher(phone);
        while(m.find()) {
            System.out.println(m.group(1));
        }
    }

    public static void main(String[] args){
        testphone();
    }
}
  • 运行结果:
    测试结果

博客中相关问题欢迎询问探讨,相互学习。QQ:1476154032,以上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值