正则表达式
title: 正则表达式
comment: true
date: 2017-11-08 17:56:44
tags:
特殊字符
.: 代替任何字符,除了换行符
^: 匹配字符开始
$: 匹配字符结束
^py$只匹配py 而 py可匹配python
*: 重复前一个正则0至n次
ab*匹配a、ab、abbb
+: 重复前一个正则1至n次
?: 重复前一个正则0或1次
*?,+?,??: ?会使前一个正则不贪婪(尽可能少的匹配前一个正则的次数)
<.*> against <a> b <c> 会匹配<a> b <c>而<.*?>只匹配<a>
{m}: 重复前一个正则m次
{m,n}: 重复前一个正则m至n中的任意次数
{m,n}?: 不贪婪
[]: 代表字符串的集合
[a-z]
\d: 数字
\s: 空白符
[]: 表示范围
[0-9a-zA-Z_]:匹配一个数字、字母或者下划线
[]+: 表示一个字符串
|: 表示或
(): 分组
(?...): 通常不作为分组
(?aiLmsux): 从中选取一个或者多个字母,与python的re模块相对应。放在正则表达式之前。
(?:...): 非捕获版本的分组,匹配后不能被引用
(?imsx-imsx:...): 与上一样,适用于部分正则表达式
(?P<name>...): 为正则表达式命名,增加额外名字
(?P=name): 引用name的字符
(?#...): 将#后的内容作为注释忽略
(?=...): 匹配后面接...的字符,但不消耗字符
(?!...): 匹配后面不接...的字符,但不消耗字符
(?<=...): 匹配之前接...的字符,但不消耗字符
(?<!...): 匹配之前不接...的字符,但不消耗字符
(?(id/name)yes-pattern|no-pattern): 匹配组,若成功匹配yes-pattern,否则匹配no-pattern。no-pattern可省略*
+字母
\number: 匹配对应编组内容
\A: 仅匹配字符串开头