博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之正则表达式
阅读量:6246 次
发布时间:2019-06-22

本文共 2284 字,大约阅读时间需要 7 分钟。

内容目录

  • 正则表达式介绍
  • 正则表达式重要类
  • 通配符介绍
  • 捕获组
  • 实例

正则表达式介绍:

  用于搜索或处理文本

正则表达式重要类:

  1. 正则表达式中设计两个中的类,分别是 Pattern和Matcher
  2. Pattern是正则表达式的编译类,用于编译表达式;该类没有公共的构造方法,只能通过Pattern p = Pattern.compile(regex) 来获取
  3. Matcher对象是增则表达式的匹配类,正则表达式编译好后用于匹配文本。

通配符介绍:

  \ : 转义字符,可以匹配特殊符号或者元字符,"\\"匹配"\",“\(”匹配“(”,“.”匹配"." 等

  ?:匹配子表达式零次或一次

  *:匹配子表达式0次或多次

  +:匹配子表达式1次或多次

  {n}:n为非负整数,表达式匹配n次,比如:[A-Za-z0-9_]{10}匹配字符数字下划线3位,即可以匹配a2_、_2b,不能匹配超过3位的字符串  

     {n,}:n为非负整数,表达式匹配至少n次,如果是{0,}等同于*,如果是{1,}等同于+,如果是{0,1}等同于?

  {n,m}:n,m均为非负整数,且n<=m

  \b:匹配一个边界,比如:cat\b可以匹配bbcat,但不能匹配bbcatb

  \B:匹配非边界字符,比如:cat\B可以匹配bbcatb,但不能匹配bbcat

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

  \D:匹配一个非数字字符,等价于[^0-9]

  \s:匹配空白字符,比如空格,制表符等

  \S:匹配任何非空白

  \w:匹配字符数字下划线,等价于[A-Za-z0-9_]

  \W:匹配非字母数字下划线,等价于[^A-Za-z0-9_]

捕获组:

  从表达式左侧开始,每遇到一个左括号“(” 记作一个分组,编号从1开始,编号为0时代表整个表达式

实例:

   1.匹配用户名:  

//匹配用户名    public  void regexUser() {        String regex = "^(\\w){3,10}$";//相当于^[A-Za-z0-9_]{3,10}        String input = "aaaa_11235";        boolean isMatch = Pattern.matches(regex, input);        if (isMatch) {            System.out.println("MATCH SUCCESS");        }else{            System.out.println("MATCH FAILURE");        }    }

   

  2.捕获组:public class GroupTest2 {

public static void main(String[] args) {        String regex = "^((\\d{4})-(\\d{2}))-(\\d{2})$";        String input = "2019-01-02";        Pattern p = Pattern.compile(regex);//编译表达式        Matcher m = p.matcher(input);  //匹配输入值        if (m.find()) {
//是否匹配 int count = m.groupCount();//捕获组数量 for (int i = 0; i <= count; i++) { System.out.println(m.group(i)); } } }} //输出值

2019-01-02

2019-01
2019
01
02

 

 

 3.捕获组命名

//捕获组命名    public static void groupMM(){        String regex = "^(?
(?
\\d{4})-(?
\\d{2}))-(?
\\d{2})$"; String input = "2019-01-02"; Pattern p = Pattern.compile(regex);//编译表达式 Matcher m = p.matcher(input); //匹配输入值 if (m.find()) {
//是否匹配 System.out.println(m.group("ym")); System.out.println(m.group("year")); System.out.println(m.group("month")); System.out.println(m.group("date")); } } //输出值 2019-01 2019 01 02

 

转载于:https://www.cnblogs.com/wqk66/p/10842462.html

你可能感兴趣的文章
基于CentOS 5.4搭建nginx+php+spawn-fcgi+mysql高性能php平台
查看>>
Java学习图
查看>>
【C++进阶:STL常见性质3】
查看>>
HDU 1507 Uncle Tom's Inherited Land*
查看>>
\u Unicode和汉字转化
查看>>
javascript易混淆的split()、splice()、slice()方法详解
查看>>
shared_ptr 知识汇总
查看>>
快速排序
查看>>
排版与缩写
查看>>
C#使用xpath查找xml节点信息
查看>>
简单的语句统计所有用户表尺寸大小
查看>>
作业四:个人项目---小学四则运算
查看>>
漂亮的按钮样式-button
查看>>
post请求方式的翻页爬取内容及思考
查看>>
VC++ MFC如何生成一个可串行化的类
查看>>
php 变量引用,函数引用
查看>>
NET生成缩略图
查看>>
微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目...
查看>>
渗流稳定性分析(MATLAB实现)
查看>>
POJ2253 Frogger(最短路径)
查看>>