首页 > 其他分享 >正则表达式

正则表达式

时间:2022-11-10 15:56:22浏览次数:45  
标签:匹配 正则表达式 matcher System pattern Pattern group

语法



java.util.regex

public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(\\d{3,4})\\-(\\d{7,8})");
        pattern.matcher("010-12345678").matches(); // true
        pattern.matcher("021-123456").matches(); // false
        pattern.matcher("022#1234567").matches(); // false
        // 获得Matcher对象:
        Matcher matcher = pattern.matcher("010-12345678");
        if (matcher.matches()) {
            String whole = matcher.group(0); // "010-12345678", 0表示匹配的整个字符串
            String area = matcher.group(1); // "010", 1表示匹配的第1个子串
            String tel = matcher.group(2); // "12345678", 2表示匹配的第2个子串
            System.out.println(area);
            System.out.println(tel);
        }
    }
}

贪婪匹配和非贪婪匹配

  • 正则默认的是贪婪匹配,会尽可能多的向后匹配
public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(\\d+)(0*)");
        Matcher matcher = pattern.matcher("1230000");
        if (matcher.matches()) {
            System.out.println("group1=" + matcher.group(1)); // "1230000"
            System.out.println("group2=" + matcher.group(2)); // ""
        }
    }
}
  • 在规则后面加上 ? 就会变成非贪婪匹配,尽可能少的匹配
public class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("(\\d+?)(0*)");
        Matcher matcher = pattern.matcher("1230000");
        if (matcher.matches()) {
            System.out.println("group1=" + matcher.group(1)); // "123"
            System.out.println("group2=" + matcher.group(2)); // "0000"
        }
    }
}

匹配字符串

  • 先用正则表达式字符串构建一个Pattern对象,构建时可以设置一个或多个标志位

  • 获取Matcher对象,通过matchers()方法判断是否匹配成功

找出多个匹配

  • 通过Matcher的find()方法来查找下一个匹配的子串
  • 通过start() end()来获取字串的下标
  • 也可以通过不带参数的group()来获取字串
  • 优雅的方式,通过results()方法获得一个Stream

用分隔符来分割

替换匹配



标签:匹配,正则表达式,matcher,System,pattern,Pattern,group
From: https://www.cnblogs.com/studyhaha/p/16877298.html

相关文章

  • 使用正则表达式获取每个章节的url时,总是返回空列表,啥情况?
    大家好,我是皮皮。一、前言国庆期间在Python白银交流群【冰冰】问了一个Python网络爬虫的问题,提问截图如下:代码如下所示:二、实现过程这里【dcpeng】和【瑜亮老师】给......
  • 正则表达式(上)
    正则表达式字符类[abc]a、b或c(简单类)[^abc]任何字符,除了a、b或c(否定)[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)[a-d[m-p]]a到d或m到p:[a-dm-p]......
  • 正则表达式(下)
    正则表达式作用二:在一段文本中查找满足要求的内容本地爬虫和网络爬虫这一段我仅仅使用案列进行演示在此之前我们需要用到两个类:pattern,他是属于java.util.regex.Patte......
  • MySQL 正则表达式
    一.介绍正则表达式用来描述或者匹配符合规则的字符串。它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"......
  • re模块和正则表达式
    一、re模块和正则表达式先来看一个例子:​​https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/​​这是京东的注册页面,打开页面我们就看到这些要求输入个人信......
  • Linux学习笔记(8)——正则表达式与文件格式化处理
    正则表达式与文件格式化处理正则表达式与文件格式化处理一、什么是正则表达式?二、基础正则表达式2.1语系对正则表达式的影响2.2grep的一些高级选项2.3基础正则......
  • 10. 正则表达式匹配
    题目描述给了一个字符串s和字符规律p其中p可能含有"."和"","."可以匹配任何单个字符,""需要和前面字符结合,表示匹配0-任意个前面字符问给定的p能不能匹配sf1-序列dp基......
  • 10.正则表达式匹配
    思路动态规划状态转移:第一个就不解释了当p[j]=='*'时,*可以表示任意个p[j-1]字符,如果表示0个p[j-1],那就是F(i,j)=F(i,j-2),即s[1~i]和p[1~j-2]匹配......
  • python Tips ----- 类型转换String、写入/追加文件、正则表达式字符、yield关键字
      类型转换String写入/追加文件 正则表达式字符  yield关键字  ......
  • 验证用户名的正则表达式
    varreg=/^[0-9a-zA-Z\u4E00-\u9FA5\_]/;//验证中文、数字、字母、下划线正则^([\u4e00-\u9fa5]{1,20}|[a-zA-Z\.\s]{1,20})$1、不能有特殊字符和数字;2、可以输入......