正则表达式
- .(点号):表示任意一个字符,除了
,比如查找所有的一个字符 .
- []:匹配中括号中列举的任意字符,比如[L,Y,0], LLY, Y0, LIU
- d:任意一个数字
- D:除了数字都可以
- s:表示空格,tab键
- S:除了空白符号
- w:单词字符,就是a-z,A-Z,0-9
- W:除了单词符号
- *:表示前面内容重复零次或者多次
- +:表示前面内容至少出现一次
- ?:前面内容出现零次或者一次
- {m,n}:允许前面内容出现最少m次,最多n次
- ^:匹配字符串的开始
- $:匹配字符串的结尾
- :匹配单词的边界
- ():对正则表达式内容进行分组,从第一个括号开始,编号逐渐增大
- A:值匹配字符串开头,Aabcd,则abcd
- :仅匹配字符串末尾,abcd,abcd
- |:左右任意一个
- (?P...):分组,除了原来的标号再指定一个别名,(?P12345){2}
- (?P=name):引用分组
正则常用方法:
- match:从开始位置开始查找,一次匹配
- search:从任何位置查找,一次匹配
- findall:全部匹配,返回列表
- finditer:全部匹配,返回迭代器
- split:分割字符串,返回列表
- sub:替换
import re
s = r'd+'
pattern = re.compile(s)
w = "ond311dadf23dsaa4324"
m = pattern.search(w)
print(m.group())
m = m = pattern.search(w, 10, 40)
print(m.group())
import re
s = r'd+'
pattern = re.compile(s)
w = "ond311dadf23dsaa4324"
m = pattern.findall(w)
print(m)
m = pattern.finditer(w)
for i in m:
print(i.group())
- 匹配中文
- 中文unicode范围主要在[u4e00-u9fa5]
# coding=gbk
import re
s = r'[u4e00-u9fa5]+'
pattern = re.compile(s)
w = '我是大 天才'
m = pattern.findall(w)
print(m)
m = pattern.finditer(w)
for i in m:
print(i.group())
修饰符 |
描述 |
re.I |
使匹配对大小写不敏感 |
re.L |
做本地化识别(locale-aware)匹配 |
re.M |
多行匹配,影响 ^ 和 $ |
re.S |
使 . 匹配包括换行在内的所有字符 |
re.U |
根据Unicode字符集解析字符。这个标志影响 w, W, , B. |
re.X |
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |