1、什么正则表达式

一个正则表达式,就是用某种模式匹配字符串一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过练习后,就觉得这些复杂表达式写起来还是相当简单的,而且,一旦你弄懂它
们,你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟(甚至几秒钟)内完成。

2、正则表达式语法

正则表达式分类

3、元字符(Metacharacter)

3.1转义号 \

\符号说明:在我们使用正则表达式检索某些特殊字符时候需要用到转义符号,否则检索不到结果,甚至会报错的。

案例: 用$匹配 "abc("怎样?用(匹配"abc("怎样

Java正则表达式中,两个\代表其他语言中的一个

需要使用转义字符场景

. * + () $ /  ? [] ^ {}

3.2、字符通配符

符号 符号说明 示例 解释
[] 接收的字符列表 [efgh] efgh中的任意个字符
[^] 不可接收的字符列表 [^abc] abc之外的任意1字符,包括数字特殊符号
- 连字符 A-Z 任意单个大写字母
. 匹配n以外的任何字符 a..b a开头b结尾,中间包括2个任意字符长度为4的字符串
\d 匹配个数字字符,相当于[0-9] \d{3}(\d)? 包含3个或4个数字的字符串
\D 匹配非单个数字字符,相当于[^0-9] \D(\d)* 以单个非数字字符开头,后接任意个数字符串
\w 匹配个数字、大小写字母字符,相当于[0-9a-zA-Z] \d{3}\w{4} 以3个数字字符开头长度为7的数字字符串
\W 匹配非单个数字大小写字母字符,相当于[^0-9a-zA-Z] \W+\d{2} 以至少1个非数字字母字符开头,2个数字字符结尾的字符串

3.3、选择通配符|

在匹配某个字符串的时候选择性的,即:既可以匹配这个,又可以匹配那个,这时你需要用到选择匹配符号(|)

符号 符号说明 示例 解释
| 匹配"|"之前或之后的表达式 ab|cd ab或者cd

3.4、限定符

符号 含义 示例 说明 匹配输入
* 指定字符重复0次或n次(无要求,零到多) (abc)* 仅包含任意abc字符串,等效于w* abc abcabcabc
+ 指定字符重复1次或n次(至少一次,1到多) m+(abc)* 以至少1个m开头,后接任意abc字符串 m mabc mabcabc
? 指定字符重复0次或1次(最多一次,0到1) m+abc? 以至少1个m开头,后接ababc字符串 mab mabc mmabc
{n} 只能输入n个字符 [abcd]{3} abcd字母组成的任意长度为3的字符串 abc dbc adc
{n,} 指定至少n个匹配 [abcd]{3,} abcd字母组成的任意长度不小于3的字符串 aab dbc aaabdc
{n,m} 指定至少n个但不多于m个匹配 [abcd]{3,5} abcd字母组成的任意长度不小于3,不大于5的字符串 abc abcd aaaaa bcdab

3.5、定位符

符号 含义 示例 说明 匹配输入
^ 指定起始字符 ^[0-9]+[a-z]* 以至少1个数字开头,后接任意个小写字母的字符串 123
$ 指定结束字符 ^[0-9]\-[a-z]+$ 一个数字开头后接连接"-",并以至少1个小写字母结尾的字符串 m mabc mabcabc
\b 匹配目标字符串的边界 abc\b 这里说的字符串的边界指的是子串间有空格,或者是目标字符串的结束位置 cabcd cabc ccabc
\B 匹配目标字符串的非边界 abc\B \b的含义刚刚相反 cabcd cabc ccabc

3.6、分组

常用分组构造形式 说明
(pattern) 命名捕获捕获匹配的子字符串。编号为零的第一个捕获是由整个正则表达式模式匹配文本,其它捕获结果则根据左括号顺序从1开始自动编号。
(?<name>pattern) 命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。用于name的字符串不能包含任何标点符号,并且不能以数字开头可以使用单引号替代尖括号,例如(?'name')
(?:pattern) 匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存 储供以后使用的匹配。这对于用"or"字符(|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) '是比'industry|industries'更经济的表达式
(?=pattern) 它是一个非捕获匹配。例如,'Windows (?=95|98|NT|2000)'匹配 "Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的 "Windows"
(?|pattern) 该表达式匹配不处于匹配pattern的字符串的起始点的搜索字符串。它是一个非捕获匹配。例如,'Windows (?!95|98|NT|2000)'匹配 "Windows 3.1"中的"Windows",但不匹配"Windows 2000"中的 "Windows"

3.7、修饰符

符号 含义 示例 说明 匹配输入
i 不区分大小写 将匹配设置为不区分大小写搜索时不区分大小写: Aa 没有区别 123
g 全局匹配 abc/g 查找所有的匹配项 Google abc tana abc
m 多行匹配 ^abc/gm 使边界字符 ^$ 匹配每一行开头和结尾,记住多行,而不是整个字符串的开头和结尾 abcdf taobao abccc
s 特殊字符圆点 . 中包含换行符 n /abc./s 默认情况下的圆点 . 是匹配除换行符 n 之外的任何字符,加上 s 修饰符之后,. 中包含换行符 n wert abc cba

原文地址:https://blog.csdn.net/xdx_dili/article/details/134682197

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29446.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注