[正则表达式].学习笔记

匹配单个字符

匹配任意字符

‘.’ 字符

  • 表示一个除换行符 \n外的任意字符,字母,数字,以及.字符本身
  • 可以多个连用表差哦是匹配多个任意字符
  • ‘\ .’表示’.’本身
.a.\. :表示a前后各有一个任意字符之后是'.'本身如:nab.com

匹配一组字符

字符 [ ]

‘[ ]’:定义一个字符集匹配’[ ]’中的任意一个字符

[efg].a.\. :表示[e或f或g][任意字符][a][任意字符]. 如:eha.com;fka.com;kega.com等
不区分大小写:[Rr]
数字:[0123456789]
大写字母:[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
小写字母:[abcdefghijklmnopqrstuvwxyz]
大小写字母:[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]

字符 ‘-‘

‘-’ :表示字符区间

数字:[0-9]
大写字母:[A-Z]
小写字母:[a-z]
大小写字母:[A-z] //匹配ASCII字符的所有字母,包含了大小写字母中的[,^等字符
字母数字:[A-Za-z0-9]
RGB值:#[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]

取非字符 ‘^’

‘^’ :取非排除一部分不需要的字符,作用于字符集中的全部字符

非数字:[^0-9]
非大写字母:[^A-Z]
非小写字母:[^a-z]
非字母:[^A-z] //匹配ASCII字符的所有字母,包含了大小写字母中的[,^等字符
非字母数字:[^A-Za-z0-9]

元字符

元字符 :在正则表达式中有着特俗含义的字符,不能代表自己本身,代表自身需要进行转义

转义字符’\’

‘\’ 将特俗的元字符转化表示字符本身,’\’字符不能单独使用.其后必须跟着另一个字符

正则表达式中常用的转义字符

$ :匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$
():标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用'\(' 和'\)'
* :匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
+ :匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
. :匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \.
[]:标记一个中括号表达式的开始。要匹配 [],请使用 \[\]
? :匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?
\ :将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”
^ :匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^
{}:标记限定符表达式的开始。要匹配 {,请使用 \{
| :指明两项之间的一个选择。要匹配 |,请使用 \|

空白元字符

‘\r\n’ 回车换行

Windows系统中两文本行之间的空白行:'\r\n\r\n'
Linux系统中两文本行之间的空白行:'\n\n'

匹配特定的字符类别

匹配数字/非数字

\d :任意一个数字字符;等价:[0-9]
\D :任意一个非数字;等价:[^0-9]

匹配字母和数字/非字母和非数字

\w :任何一个字母数字下划线;等价:[a-zA-Z0-9_]
\W :任何一个非字母数字下划线;等价:[^a-zA-Z0-9_]

匹配空白字符/非空白字符

\s :任何一个空白字符;等价:[\f\n\r\t\v]
\S :任何一个非空白字符;等价:[^\f\n\r\t\v]

匹配十六进制或八进制

\x :匹配十六进制 如:\x0A:表示ASCII码中的10即'\n'换行
\0 :匹配八进制 如:\011 :表示ASCII码中的9即'\t'制表符

匹配十六进制的Unicode字符

\uxxxx :查找以十六进制数 xxxx 规定的 Unicode 字符

POSIX字符类(unix系统中使用)

正则表达式中的修饰符

修饰符 :可以在全局搜索中忽略大小写

i - 修饰符是用来执行不区分大小写的匹配。
g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)
m - 用于多行匹配的全文搜索

重复匹配

匹配一个或多个字符 ‘+’

‘+’ :匹配一个或多个(至少一个)字符/字符集,’+’表示’+’本身

\w+@\.\w+ :表示邮箱

匹配零个或多个字符 ‘*’

‘*’ :匹配零个或多个字符/字符集

\w+[\w.]*@[\w.]+\.\w+ :表示邮箱

匹配零个或多个字符 ‘?’

‘?’ :匹配零个或一个字符/字符集

限定重复匹配的次数 ‘{n}’

‘{n}’ :表示字符/字符集重复出现n次

RGB的值 :[A-Fa-f0-9]{6} :[A-Fa-f0-9]重复出现6次

限定重复匹配的次数区间 ‘{n,m}’

‘{n,m}’ :表示字符/字符集至少重复n次最多重复m次

[\w]{6,8} :6到8位字母数字下划线

限定至少重复的次数 ‘{n,}’

‘{n,}’ :表示字符/字符集至少重复出现n次

[\w]{6,} :至少6位字母数字或下划线

防止过度匹配

贪婪型元字符

贪婪型元字符:会从文本的开始到末尾一直进行匹配

懒惰型元字符

懒惰型元字符:匹配尽可能少的字符,匹配到即停止匹配
防止过度匹配即借助懒惰型元字符进行匹配

测试文本:<b>12345</b>and<b>646582</b>

正则表达式:<[Bb]>.*</[Bb]>
结果:<b>12345</b><b>646582</b>匹配全部文本

正则表达式:<[Bb]>.*?</[Bb]>
结果:<b>12345</b><b>646582</b>匹配两个需要的部分

位置匹配

单词边界 ‘\b’

‘\b’ :匹配单词的边界(单词和符号之间的边界)
符号:包括中文,英文,空格,换行制表符
单词:包括中文字符,英文字符,数字

测试文本:The cat scattered his food all over the room

正则表达式: cat
结果找到:cat 和s[cat]tered

正则表达式: \bcat\b
结果:cat 匹配单词cat

正则表达式: \bcat
结果:cat 匹配cat开头的单词

正则表达式: cat\b
结果:cat 匹配cat结尾的单词

非单词边界 ‘\B’

‘B’ :匹配非单词边界(单词与单词,符号与符号之间的边界)

字符串边界 ‘^’和’$’

‘^’ :定义字符串的开头,放在字符/或字符集的开头
‘$’ :定义字符串的结尾,放在字符或字符集的结尾

^\s*<\?xml.*\?> :检测是否是xml文件
</[Hh][Tt][Mm][Ll]>\s*$ :检测html文档是否正确

分行匹配模式 ‘?m’

‘?m’ :使用分行匹配模式 ‘^’和’$’可以对每行都进行开头和结尾的匹配

^/s*//.*$ :找出全部的注解://

子表达式

子表达式字符 ‘( )’

‘( )’ :表示子表达式的开始和结束

(\d{1,3}\.){3}\d{1,3} :匹配IP地址

或字符 ‘|’

‘|’ :表示或的意思

(19|20)\d{2} :匹配年份19几几年或20几几年
19|20\d{2} :匹配年份19开头的或者20开头的任意4

子表达式的嵌套

((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5])\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))
正确的Ip正则,Ip的每一组数字须小于255

回溯引用

前后一致匹配

回溯引用:指的是模式的后半部门引用前半部分中定义的子表达式

[ ]+(\w)+[ ]+\1 :前面子表达式(\w)匹配的是什么,后面\1同样匹配该字符/字符集
<[Hh]([1-6])>.*?</[Hh]\1> :匹配标题H1到H6

注意:

回溯引用只能用来引用模式里的子表达式(用'( )'括起来的正则表达式片段)
回溯引用匹配下哦能1开始技术如:\1、\2,第0个匹配(\0)可以用来代表整个正则表达式

附录:常用的元字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值