| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [View Raw Code] [Original HTTPS Page] |
正则表达式元字符列表
| 分类 | 元字符 | 含义 |
| 匹配边界 | ^ | 匹配行首 |
| $ | 匹配行尾 | |
| 重复次数 | ? | 重复匹配 0 次或 1 次 |
| * | 重复匹配 0 次或 更多次 | |
| + | 重复匹配 1 次或 更多次 | |
| {n, } | 重复 n 次或 更多次 | |
| {n, m} | 重复 n~m 次 | |
| {n} | 重复 n 次 | |
| 各种字符的表示 | [a-z] | 任意 a~z 的字母 |
| [abc] | a/b/c 中的任意一个字符 | |
| [^123abc] | 匹配除了 123abc 这几个字符以外的任意字符 | |
| . | 匹配除换行符以外的任意一个字符 | |
| \b | 匹配一个单词的边界 | |
| \B | 匹配不是单词的开始和结束位置 | |
| \d | 匹配数字 | |
| \D | 匹配任意非数字的字符 | |
| \w | 匹配字母、数字、下划线 | |
| \W | 匹配任意不是字母、数字、下划线的字符 | |
| \s | 匹配任意空白,包括空格、制表符、换行符 | |
| \S | 匹配任意不是空白符的字符 | |
| 其他 | [^a] | 匹配除了 a 以外的任意字符 |
| 123|abc | 匹配 123 或 abc |
Python 使用 re 模块 使用正则表达式,使用正则表达式的情况下如果要使用原始字符串就要在字符串前加一个 r 前缀
re 模块的一般使用步骤
compile 函数 : pattern = re.compile("正则表达式")
compile 函数用于编译正则表达式,生成一个 Pattern 对象
利用 pattern 的一系列方法对文本进行匹配查找
Pattern 常用方法
| 方法 | 描述 |
|---|---|
| .match(string, start, end) | 从起始位置开始查找,一次匹配 |
| .search(string, start, end) | 从任何位置开始查找,一次匹配 |
| .findall(string, start, end) | 全部匹配,返回列表 |
| .finditer(string, start, end) | 全部匹配,返回迭代器 |
| .split(String, Macsplit) | 分割字符串,返回列表 |
| .sub(repl, String, Count) | 替换 |
Pattern 对象常用方法
match 方法 : 查找字符串的头部 (也可以指定起始位置), 一次匹配,只要找到一个匹配结果就返回,不是查找所有匹配结果
一般使用形式
Match = pattern.match(
string, # 要匹配的目标字符串
start, # 要匹配的目标字符串的起始位置 (可选参数)
end # 结束位置 (可选参数)
)参数
当匹配成功时返回一个 Match 对象,如果没有匹配上,则返回 None
search 方法 : 查找字符串的任何位置,一次匹配,找到一个匹配的结果就返回,而不是所有的匹配结果
一般使用形式
Match = pattern.search(
string, # 要匹配的目标字符串
start, # 要匹配目标字符串的起始位置 (可选参数)
end # 结束位置 (可选参数)
)参数
当匹配成功时返回一个 Match 对象,如果没有匹配上,则返回 None
findall 方法 : 查找整个字符串,多次匹配,返回所有匹配对象的列表
一般使用形式
Match = pattern.findall(
string, # 要匹配的目标字符串
start, # 要匹配目标字符串的起始位置 (可选参数)
end # 结束位置 (可选参数)
)参数
以列表形式返回全部能匹配的子串,如果没有匹配返回一个空列表
finditer 方法 : 与 findall 类似,搜索整个字符串,获取所有匹配结果,返回一个顺序访问没一个匹配结果 (Match 对象) 的迭代器
一般使用形式
Match = pattern.finditer(
string, # 要匹配的目标字符串
start, # 要匹配目标字符串的起始位置 (可选参数)
end # 结束位置 (可选参数)
)参数
返回一个顺序访问没一个匹配结果 (Match 对象) 的迭代器
split 方法 : 按照能够匹配的子串将字符串分割后返回列表
一般使用形式
Match = pattern.split(
String, # 要匹配的目标字符串
Maxsplit # 指定最大分隔次数,默认全部分隔,可选
)参数
sub 方法 : 用于替换指定字符串中指定字符
一般使用形式
Match = pattern.sub(
repl, # 替换成什么
String, # 替换什么
Count # 替换次数, 可选
)参数
实例
s = "zhangsan:20000,list:3000"
p = re.compile("(\w+):(\w+)")
print(p.sub(r'lisi:500', s, 1)) # lisi:500,list:3000
print(p.sub(r'\2 \1', s)) # 20000 zhangsan,3000 list
def func(m):
print(m.group())
return m.group(1) + '\t' + str(int(m.group(2)) + 200)
print(p.sub(func, s)) # zhangsan 20200,list 3200
print(p.sub(func, s, 1)) # zhangsan 20200,list:3000匹配中文 : 匹配中文的 unicode 编码,中文的 unicode 编码范围主要在 [u4e00-u9fa5] (不包括全角中文标点)
re.S 在正则中的作用
| Back | FazBrowse Home | New Git URL |