先行知识点
import re
str1=r"javapythonphp\." # r 所有转义字符等都按照字符串来看
str2="javapythonphp\n"
print(str1) #javapythonphp\.
print(str2)# javapythonphp
实战中的正则表达式
import re
content=r"javapythonhtmlphp"
expression=r"python" #正则表达式 匹配为python的字符串
pattern=re.compile(expression)
result=re.search(pattern,content)
print(result.group(0)) #python
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]']
import re
content=r"[email protected]"
expression=r"123@qq\.com" #点匹配任何 这里用了r +\ 即\.是个表达式代表.
pattern=re.compile(expression) #编译该表达式
print(pattern.findall(content)) #寻找并输出所有符合表达式的项
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']
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']
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']
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']
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)