python正则表达式实战中的总结

先行知识点

  1. 在字符串前面加个r,即所有的字符都当作字符,如下代码
import re
str1=r"javapythonphp\." # r 所有转义字符等都按照字符串来看
str2="javapythonphp\n"
print(str1) #javapythonphp\.
print(str2)# javapythonphp

实战中的正则表达式

  1. 基础使用(匹配为python的字符)
import re

content=r"javapythonhtmlphp"
expression=r"python" #正则表达式 匹配为python的字符串
pattern=re.compile(expression)
result=re.search(pattern,content)
print(result.group(0)) #python
  1. 贪婪和非贪婪模式
import re

url=r"[email protected]"
greedExpression=r"@.+\." # 贪婪模式  +号后面是\. 即匹配到最后一个. 为止
exector=re.compile(greedExpression)
result=exector.findall(url)
print(result)

lazyExpression="@.+?\."# +号后加个? 指的是匹配到第一个点即停止不再继续匹配
exector=re.compile(lazyExpression)
result=exector.findall(url)# 返回结果为list
print(result) #['[email protected]']
  1. 匹配邮箱
import  re

content=r"[email protected]"
expression=r"123@qq\.com" #点匹配任何 这里用了r +\ 即\.是个表达式代表.
pattern=re.compile(expression) #编译该表达式
print(pattern.findall(content)) #寻找并输出所有符合表达式的项
  1. *号在http中的使用
import re

content=r"http://www.baidu.com https://www.baidu.com"
expression=r"https*" #*号前面东西有也可以没有也可以
executor=re.compile(expression)
result=executor.findall(content)
print(result) #返回的是list ['http', 'https']
  1. 前瞻后顾表达式
import re
html_str=r"

hello world

dasdhello hahaha dadja"
expression=r"(?<=

).+(?=

)"
#?<=后顾 ?=前瞻 即匹配 即匹配前面是

后面是

的字符串并取出夹在

的数据
expression2=r"(?).+(?!)"#即非前瞻后顾表达式 即匹配前面不是

后面不是

execotr=re.compile(expression) result=execotr.findall(html_str) print(result)# ['hello world']
  1. 非表达式和非单词表达式
import re

content=r"lap map &ap xap sip"
expression=r"[^x]ap" # 匹配非x且后面跟着ap的字符串
expression2=r"\Wap" # 匹配ap前面不是英文单词的字符串
executor=re.compile(expression)
executor2=re.compile(expression2)
result=executor.findall(content)
result2=executor2.findall(content)
print(result)# ['lap', 'map', '&ap']
print(result2) #['&ap']
  1. 数量匹配表达式
import re

content=r"bat baat baaaat baaaaet"

only_oneortwo_expression=r"ba{1,2}t"#匹配字符为:  b a*(一至两个)t
only_two_expression=r"ba{2}t"
at_least_two=r"ba{2,}t" #匹配字符为:  b a*(至少两个)t
at_most_three=r"ba{,3}t"# 匹配字符为: b a*(至多三个) t

exector=re.compile(only_oneortwo_expression)
result=exector.findall(content)
print(result)['bat', 'baat']
  1. 检验邮箱表达式
import re

content=r"[email protected]@qq.com"
# 邮箱规则 数字 字母 下划线 开头 +@ 数字 英文小写 . 英文2-3
expression=r"^\w+?@[a-z0-9]+?\.[a-z]{2,3}"

executor=re.compile(expression)
result=executor.findall(content)
print(result)

你可能感兴趣的:(python)