python 正则表达式字符说明

.

元字符 说明
. 代表任意字符
| 逻辑或操作符
[ ] 匹配内部的任一字符或子表达式
[^] 对字符集和取非
- 定义一个区间
\ 对下一字符取非(通常是普通变特殊,特殊变普通)
* 匹配前面的字符或者子表达式0次或多次
*? 惰性匹配上一个
+ 匹配前一个字符或子表达式一次或多次
+? 惰性匹配上一个
? 匹配前一个字符或子表达式0次或1次重复
{n} 匹配前一个字符或子表达式
{m,n} 匹配前一个字符或子表达式至少m次至多n次
{n,} 匹配前一个字符或者子表达式至少n次
{n,}? 前一个的惰性匹配
^ 匹配字符串的开头
\A 匹配字符串开头
$ 匹配字符串结束
[\b] 退格字符
\c 匹配一个控制字符
\d 匹配任意数字
\D 匹配数字以外的字符
\t 匹配制表符
\w 匹配任意数字字母下划线
\W 不匹配数字字母下划线
正则表达式 代表的匹配字符
[0-9] 0123456789任意之一
[a-z] 小写字母任意之一
[A-Z] 大写字母任意之一
\d 等同于[0-9]
\D 等同于[^0-9]匹配非数字
\w 等同于[a-z0-9A-Z_]匹配大小写字母、数字和下划线
\W 等同于[^a-z0-9A-Z_]等同于上一条取非

例:

import re

key2 = r"<html><body><h1>hello world</h1></body></html>"#这段是你要匹配的文本
re2 = re.compile(r"(?<=<h1>).+?(?=</h1>)") # ?<= 和 ?= 就是匹配里面 向前查找 和 向后查找
print(re2.findall(key2)) # 结果为 Hello world """split 方法按照能够匹配的子串将字符串分割后返回列表"""
xx = re.split('\W+', ',1,runoob,runoob, runoob1212123');
print(xx) """和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回"""
it = re.finditer(r"\d+","12a32bc43jf3")
for match in it:
print (match.group() ) """
findall在字符串中找到正则表达式所匹配的所有子串
注意: match 和 search 是匹配一次 findall 匹配所有。
"""
pattern = re.compile(r'\D+') # 查找非数字
result1 = pattern.findall('runoob 123 google 456')
print(result1) """ compile 编译正则表达式,供 match() 和 search() 这两个函数使用"""
pattern = re.compile(r'([0-9]+) ([0-9]+)',re.I) # re.I 表示忽略大小写
cc = pattern.match('23 44444 343')
print(cc.group(2) ) """sub 替换字符串中的匹配项"""
phone = "2000-34-434 #这是一个外国的电话"
num = re.sub(r'#.*$',"",phone);
print(num) """ search 全局搜索字符串""" matchObj = re.search(r'com', 'www.runoob.com')
if matchObj:
print("search --> matchObj.group() : ", matchObj.group())
else:
print( "No match!!",matchObj) """match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。"""
ma = re.match('www', 'www.runoob.com') # 在起始位置匹配
print(ma)
print(ma.group(0)) #字符串中提取ip

 string_ip = "is this 289.22.22.22 ip ?
  result = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", string_ip)

上一篇:运lucky


下一篇:CF109 C. Lucky Tree 并查集