正则表达式
正则表达式
正则规则
- 第一条规则: 本身是哪一个字符,就匹配字符串中的哪一个字符
- 第二条规则:使用字符组,一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上
字符组 [ ]
- 格式:
[字符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次以上,但尽可能少重复


浙公网安备 33010602011771号