.
元字符 | 说明 |
---|---|
. | 代表任意字符 |
| | 逻辑或操作符 |
[ ] | 匹配内部的任一字符或子表达式 |
[^] | 对字符集和取非 |
- | 定义一个区间 |
\ | 对下一字符取非(通常是普通变特殊,特殊变普通) |
* | 匹配前面的字符或者子表达式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 rekey2 = r"hello world
"#这段是你要匹配的文本re2 = re.compile(r"(?<=).+?(?=
)") # ?<= 和 ?= 就是匹配里面 向前查找 和 向后查找 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)