正则表达式
Posted hedger-lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
正则规则
- 第一条规则: 本身是哪一个字符,就匹配字符串中的哪一个字符
- 第二条规则:使用字符组,一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上
字符组 [ ]
- 格式:
[字符1字符2]
- 可以指定范围
- 所有的范围都必须遵循
ascii
码从小到大来指定- [0-9] [a-z] [A-Z]
- 所有的范围都必须遵循
元字符
带 的元字符
-
d 表示所有的数字
- d --> 是转义符,转义符转义了d,让d能够匹配所有0-9之间的数
-
w 表示所有的数字、字母、下划线
-
s 表示所有的空白,空格,换行,制表符
- 匹配制表符
- 匹配换行符
-
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次以上,但尽可能少重复
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性