""" python正则表达式 """

1 . 匹配除换行符以外的任意字符
2 \w 匹配字母或数字或下划线
3 \s 匹配任意的空白符
4 \d 匹配数字
5 \n 匹配一个换行符
6 \t 匹配一个制表符
7 ^ 匹配字符串的开始(强制匹配开通)
8 $ 匹配字符串的结尾(强制匹配结尾)

9 \W 匹配非字母或数字或下划线
10 \D 匹配非数字
11 \S 匹配非空白符
12 \a|b 匹配字符a或字符b

13 () 匹配括号内的表达式,也表示一个组,只能匹配一个,加上|则是或的意思
14 [...] 匹配字符组中的字符
15 [^...] 匹配除了字符组中字符的所有字符
16 [0-9] 0123456789任意之一
17 [a-z] 小写字母任意之一
18 [A-Z] 大写字母任意之一

量词:控制前面的元字符出现的次数
1 * 重复零次或更多次
2 + 重复一次或更多次
3 ? 重复零次或一次
4 {n} 重复n次
5 {n,} 重复n次或更多次
6 {n,m} 重复n到m次

贪婪匹配和惰性匹配
1 .* 贪婪匹配(只匹配一个结果)
2 .*? 惰性匹配 (爬虫用的最多,可以匹配多个结果)

 

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)

  

相关文章:

  • 2021-12-20
  • 2022-12-23
  • 2022-01-20
  • 2021-11-13
  • 2021-04-26
  • 2021-11-08
  • 2022-02-08
  • 2021-07-07
猜你喜欢
  • 2022-02-12
  • 2022-12-23
  • 2022-12-23
  • 2022-02-09
  • 2021-10-12
  • 2021-06-29
  • 2022-12-23
相关资源
相似解决方案