正则表达式
正则表达式
正则规则
- 第一条规则: 本身是哪一个字符,就匹配字符串中的哪一个字符
- 第二条规则:使用字符组,一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上
字符组 [ ]
- 格式:
[字符1字符2]
- 可以指定范围
- 所有的范围都必须遵循
ascii
码从小到大来指定- [0-9] [a-z] [A-Z]
- 所有的范围都必须遵循
元字符
带 \ 的元字符
\d 表示所有的数字
- \d --> \是转义符,转义符转义了d,让d能够匹配所有0-9之间的数
\w 表示所有的数字、字母、下划线
\s 表示所有的空白,空格,换行,制表符
- \t 匹配制表符
- \n 匹配换行符
\D 表示所有的非数字
\W 表示 除字母、数字、下划线之外的所有字符
\S 表示非空白
特殊
.
表示除了换行符之外的所有内容[]
字符组,只要在中括号内的所有字符都是符合规则的字符[^]
非字符组,只要在中括号内的所有字符都是不符合规则的字符^
表示以一个字符为开始$
表示以一个字符为结束|
表示或,注意点:如果两个规则有重叠部分,总是长的在前面,短的在后面- 只负责把两个表达式分开,如果是在整个表达式中只对一部分内容进行或,需要分组
()
表示分组,给一部分正则规定为一组,|
这个符号的作用域就可以缩小了
量词
{n} 表示只能出现n次
{n,} 表示至少出现n次
{n,m}表示至少出现n次,至多出现m次
? 表示匹配0次或1次 表示可有可无 但是有只能有一个 比如小数点
+
表示匹配1次或多次*
表示匹配0次或多次 表示可有可无 但是有可以有多个 比如小数点后n位?字符
表示按照元字符规则在量词范围内匹配,一旦遇到该字符就停止- .*?x 匹配任意的内容任意多次遇到x就立即停止
.*?的用法
. 是任意字符 * 是取 0 至 无限长度 ? 是非贪婪模式。 在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在: .*?x 就是取前面任意长度的字符,直到一个x出现
匹配原则
贪婪匹配
默认匹配原则,使用的是回溯算法,总是会在符合量词条件的范围内尽量多匹配
非贪婪匹配
惰性匹配,总是匹配符合条件范围内尽量少的字符串
几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复 +? 重复1次或更多次,但尽可能少重复 ?? 重复0次或1次,但尽可能少重复 {n,m}? 重复n到m次,但尽可能少重复 {n,}? 重复n次以上,但尽可能少重复
相关推荐
jyj00 2020-07-19
wangzhaotongalex 2020-10-20
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
taomengxing 2020-09-07
MaggieRose 2020-08-19
jyj00 2020-08-15
MaggieRose 2020-07-04
modaiairen 2020-06-28
ziggurat 2020-06-28
JnX 2020-06-27
jyj00 2020-06-26
山水沐光 2020-06-25
shqhope 2020-06-23
eroshn 2020-06-21
码墨 2020-06-16
wyq 2020-11-11
TLROJE 2020-10-26