正则表达式符号+主要操作

正则表达式:其实就是用于操作字符串的一个规则,正则表达式的规则使用了特殊的符号表示。

一.预定义字符
注意:任何预定义字符没有加上数量词之前都只能匹配一个字符而已。
在这里插入图片描述

 System.out.println("任意字符:"+"a".matches("."));
     System.out.println("數字字符:"+"12".matches("\\d"));
     System.out.println("非數字字符:"+"1".matches("\\D"));
     System.out.println("空白字符:"+"\n".matches("\\s"));
     System.out.println("非空白字符:"+"a".matches("\\S"));
     System.out.println("單詞字符:"+"@".matches("\\w"));
     System.out.println("非單詞字符:"+"@".matches("\\W"));

数量词 都用的挺多的
在这里插入图片描述

System.out.println("?一次或者一次也没有:"+"2".matches("\\d?"));
    System.out.println("*零次或多次:"+"3145435".matches("\\d*"));
    System.out.println("+至少出现一次:"+"435342".matches("\\d+"));
    System.out.println("{n}恰好出现4次:"+"3245".matches("\\d{4}"));
    System.out.println("{n,}至少出现n此:"+"3242".matches("\\d{5,}"));
    System.out.println("{n,m}至少n次,但是不超过m次:"+"325".matches("\\d{4,11}"));

范围表示
注意:不管范围有多大,没有数量词的时候只能匹配一个字符
在这里插入图片描述

分组()的目的是为了让正则的内容被复用起来,组号是从1开始,不能被指定
((A)(B©))
组号1:(A(B©))
第二组:(A)
第三组:(B©)
第四组:©

\1:引用第一组所匹配到的内容
\2:引用第二组所匹配到的内容

 //根據字符串的重疊詞進行切割
     private static void testsplit2() {
           // TODO Auto-generated method stub
           String str = "明天天玩開開開開開開心心的的呢";
           //如果正则的内容需要被复用,那么需要对正则的内容进行分组。分组的目的就是为了提高正则的 复用性,组号不能指定,组号是从1开始的
           String[] datas = str.split("(.)\\1+");
           System.out.println(Arrays.toString(datas));
     }

二.正则表达式的主要操作
正则表达式式用于操作字符串的规则,正则表达式对字符串的操作主要有以下几种方式应用

匹配 : matches()

切割split();

替换replaceAll(String regex,String replacement);
为了避免打广告,会用正则删联系方式
邮箱写成 181牛客86牛客148牛客101@牛客qq.com

查找:

Pattern p = new Pattern.compile(“正则”);
Matcher m = p.matcher(“aaaadd”);
boolean b = m.matches();

匹配器要使用到的方法:
1.
find() 通知匹配器去匹配字符串,查找符合规则的字符串,如果能查找到符合规则的字符串,则返回true,否则返回false
2.
group() 获取符合规则的子串。

注意:是使用group方法的时候一定要先调用find的方法让匹配器查找符合规则的字符串,否则报错。

查找需要使用的对象:
1.
Pattern(正则对象)
2.
Matcher(匹配器对象)

     //替换1
     private static void replacAll() {
           String str = "有问题可以联系:18188181885,有问题可以联系:18188181880,有问题可以联系:18188181880";
           String reg ="1[34578]\\d{9}";
           str = str.replaceAll(reg,"****");
           System.out.println("被替换的内容是:"+str);
     }
     //替换2
     private static void replaceTest() {
           String str  = "aaaaabbbbbbbcccccccddddddddsss";//把重叠词替换成单个单词
           str = str.replaceAll("(.)\\1+","$1" );  //
           System.out.println("被替换的内容是:"+str);
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值