1、什么是正则表达式
一个正则表达式,就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过练习后,就觉得这些复杂的表达式写起来还是相当简单的,而且,一旦你弄懂它
们,你就能把数小时辛苦而且易错的文本处理工作缩短在几分钟(甚至几秒钟)内完成。
2、正则表达式的语法
正则表达式的分类
3、元字符(Metacharacter
)
3.1转义号 \
\
符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错的。
案例: 用$
去匹配 "abc("
会怎样?用(
去匹配"abc("
会怎样?
需要使用转义字符的场景
. * + () $ / ? [] ^ {}
3.2、字符通配符
符号 | 符号说明 | 示例 | 解释 |
[] |
可接收的字符列表 | [efgh] |
e 、f 、g 、h 中的任意一个字符 |
[^] |
不可接收的字符列表 | [^abc] |
除a 、b 、c 之外的任意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 开头,后接ab 或abc 的字符串 |
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 |
不区分大小写 | 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别 |
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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。