- 字符:
. 匹配除换行符以外的任意字符
\ 转义字符,使后一个字符改变原来的意思
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
- 次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
[] 字符集
() 分组
| 或
match
- match,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None
match(pattern, string, flags=0)
# pattern: 正则模型
# string : 要匹配的字符串
# falgs : 匹配模式
- flags有:
re.S(DOTALL) - 使.匹配包括换行在内的所有字符
re.I(IGNORECASE) - 使匹配对大小写不敏感
re.L(LOCALE) - 做本地化识别(locale-aware)匹配,法语等
re.M(MULTILINE) - 多行匹配,影响^和$
re.X(VERBOSE) - 该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
re.U - 根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B
origin = "hello world Perform case-insensitive matching66."
r = re.match("h\w+", origin)
print(r.group()) # 获取匹配到的所有结果
print(r.groups()) # 获取模型中匹配到的分组结果
print(r.groupdict()) # 获取模型中匹配到的分组结果
>>> hello
>>> ()
>>> {}
- search
- search,浏览整个字符串去匹配第一个,未匹配成功返回None
- re.match 与 re.search 的区别:
re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
re.search 匹配整个字符串,直到找到一个匹配。
- findall
- re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。
r = re.findall('h(\w+)', origin)
print(r)
>>> ['ello', 'ing9999']
常用的20个表达式 :点我