正则表达式

为了实现复杂的模式匹配,模式串的构造应该遵循某种规则,这样的模式称为正则表达式

正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

正则表达式 说明
[abc] 匹配a,b,或c
[^abc] 匹配除a、b、c以外的字符
[a-zA-Z] 匹配a到z或A到Z之间的字符
[a-d[m-p]] a到d或m到p(并)
[a-z&&[def]] d,e,或f(交)
[a-z&&[^bc]] 除b,c以外a到z:[ad-z](差)
[a-z&&[^m-p]] a到z中除m到p以外的字符:[a-lq-z](差)

在模式串中还可以使用一些预定义字符,称为元字符,如表所示。

元字符 说明
. 匹配任何单个字符
\d 一位数字:[0-9]
\D 一位非数字:[^0-9]
\s 空格字符:[\t\n\x0B\f\r]
\S 非空格字符:[^\s]
\w 一个单词字符:[a-zA-Z_0-9]
\W 一个非单词字符:[^\w]

量词用来指定模式在字符串中出现的次数。有3种类型的量词,贪婪量词、勉强量词和具有量词。

量词 模式X出现的次数
X? X出现0次或1次
X* X出现0次或多次
X+ X出现1次或多次
X{n} X恰好出现n次
X{n,} X至少出现n次
X{n,m} X至少出现n次,但不超过m次

一般的量词是{n,m},n和m都是整数。X{n,m}在字符串中X至少重复n次,但不超过m次。例如,与X{3,5}匹配的字符串包括XXX、XXXX和XXXXX,但不包括X、XX和XXXXXX。

java中正则表达式常用的语法

字符的取值范围
1.[abc] : 表示可能是a,可能是b,也可能是c。
2.[^abc]: 表示不是a,b,c中的任意一个
3.[a-zA-Z]: 表示是英文字母
4.[0-9]:表示是数字
简洁的字符表示
.:匹配任意的字符
\d:表示数字
\D:表示非数字
\s:表示由空字符组成,[ \t\n\r\x\f]
\S:表示由非空字符组成,[^\s]
\w:表示字母、数字、下划线,[a-zA-Z0-9_]
\W:表示不是由字母、数字、下划线组成
数量表达式
1.?: 表示出现0次或1次
2.+: 表示出现1次或多次
3.*: 表示出现0次、1次或多次
4.{n}:表示出现n次
5.{n,m}:表示出现n~m次
6.{n,}:表示出现n次或n次以上
逻辑表达式
1.XY: 表示X后面跟着Y,这里X和Y分别是正则表达式的一部分
2.X|Y:表示X或Y,
3.(X):子表达式,将X看做是一个整体

在实际的开发中,是使用String类下的方法
验证: boolean matches(String regex)
拆分: String[] split(String regex)
替换: String replaceAll(String regex, String replacement)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • String类和正则表达式 今天的主要内容 Scanner类概述Scanner获取数据出现的小问题及解决方案 St...
    须臾之北阅读 5,922评论 0 3
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,526评论 0 20
  • python的re模块--细说正则表达式 可能是东半球最详细最全面的re教程,翻译自官方文档,因为官方文档写的是真...
    立而人阅读 23,290评论 4 46
  • 本文译自 制作正则引擎的作者 Jan Goyvaerts 为工具 RegexBuddy 写的教程版权归原作者所有注...
    极客圈阅读 8,543评论 0 25
  • #首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用法 环视用法...
    mapuboy阅读 5,548评论 0 51