美文网首页程序员LovingPython
Python与正则表达式

Python与正则表达式

作者: 月蚀様 | 来源:发表于2019-05-18 18:59 被阅读12次

正则表达式是什么

对字符串操作的一种逻辑公式

练习方式

tool.oschina.net/regex/

re模块

常规匹配

import re

content = 'akjnankc123ajckncs'
re_text = 'akj\d{3}\s{4}ncs'

result = re.match(re_text, content)
print(result)
print(result.group())
print(result.span())

泛匹配

import re

content = 'Hello this is Aaron'
re_text = '^Hello.*Aaron$'

result = re.match(re_text, content)
print(result)
print(result.group())
print(result.span())

匹配目标

import re

content = 'Hello 123131this is Aaron'
re_text = '^Hello (\d+).*Aaron$'

result = re.match(re_text, content)
print(result)
print(result.group(1))
print(result.span())

贪婪匹配

import re

content = 'Hello 123131this is Aaron'
re_text = '^Hello.*(\d+).*Aaron$'

result = re.match(re_text, content)
print(result)
print(result.group(1))
print(result.span())

非贪婪匹配

import re

content = 'Hello 123131this is Aaron'
re_text = '^Hello.*?(\d+).*Aaron$'

result = re.match(re_text, content)
print(result)
print(result.group(1))
print(result.span())

匹配模式

. 是不可以匹配换行符的

import re

content = '''Hello 123131
this is Aaron'''
re_text = '^Hello.*?(\d+).*Aaron$'

result = re.match(re_text, content, re.S)
print(result)
print(result.group(1))
print(result.span())

转义

使用 \ 来转义特殊字符

re.search

import re

content = 'extra strings Hello 123131this is Aaron extra strings'
re_text = 'Hello.*?(\d+).*Aaron'

result = re.search(re_text, content)
print(result)
print(result.group(1))
print(result.span())

re.findall

搜索字符串,以列表形式返回全部能匹配的子串

re.sub

替换字符串中每一个匹配的子串后返回替换后的字符串

import re

content = "asfawacw Hello 123123123this is Aaronawdawcwc"

result = re.sub('(\d+)', '\1 2123', content)
print(result)

re.compile

将一个正则表达式串编译成正则对象,以便复用该匹配模式
PS:上述的 re_text 均应该使用这种方法

import re

content = "Hello 123123123this is Aaron"
pattern = re.compile('Hello.*Aaron', re.S)

result = re.match(pattern, content)
print(result)

相关文章

网友评论

    本文标题:Python与正则表达式

    本文链接:https://www.haomeiwen.com/subject/inbvoqtx.html