python-正则表达式学习笔记(入门)

概念:

正则表达式(规则表达式:Regular Expression),通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。

python提取字符串方式示例:

<html>
	<body>
		<p>get these chars</p>
	</body>
</html>

小白们(包括在下)常规情况下要获取上面所示简单代码中的get these chars,以所学python知识,如下:

chars = '<html><body><p>get these chars</p></body></html>'
chars_index_min = chars.find('<p>') + 3
chars_index_max = chars.find('</p>')
print(chars[chars_index_min:chars_index_max])

此时就可获取字符串:get these chars
用这种方法的确能够获取正确的字符串,但这只是提取万千代码中的一个,若要提取大量内容,恐怕烦不胜烦。而正则表达式可以良好的解决这个问题。

用正则表达式获取内容简单示例

import re

chars = r'<html><body><p>get these chars</p></body></html>'
my_chars = r'(?<=<p>).+?(?=</p>)' # 写出我们想要获取的内容的正则表达式
compile_result = re.compile(my_chars) # 编译正则表达式
matcher = re.search(compile_result, chars) # 在字符串chars中搜索内容进行匹配
print(matcher.group(0)) # 打印获取的内容

此时获取的内容如下:

get these chars

没错,正则表达式就是这种结构:

#输入要筛选的字符串
#输入要查找的内容所对应的正则表达式
#对正则表达式进行编译(compile函数)
#查找内容相对于字符串的位置(search、findall等函数)
#打印输出

正则表[达式(元字符)与其所匹配的字符或含义

字符对应的正则表达式
[0-9]个位的自然整数
a-z小写字母集
A-Z大写字母集
\d等同于[0-9]
\D匹配非数字,\d取非
\w匹配数字、大小写字母、下划线
\W匹配除了数字、大小写字母、下划线之外的字符
.代表任意字符
|逻辑或操作符
[]匹配内部的任意字符或表达式
[^]对字符集取非
-定义某个区间
\取非和转义字符
*匹配前面的字符或者子表达式
?惰性匹配
+匹配前一个字符或子表达式
{m,n}匹配前一个字符至少m次,至多n次
^匹配字符串的开头
\A匹配字符串开头
$匹配字符串结束
[\b]退格字符
\c匹配一个控制字符
\t匹配制表符

特殊正则表达形式(初学仅总结这一个,以后补充)

?<= : 所匹配的内容在(?<=)之后
?= : 所匹配内容在 (?=)之前

正则实例解析

欲要匹配下面代码中的div中的内容:
<html>
    <body>
        <div>I Love Python</div>
        <div>I Also Love C#</div>
    </body>
</html>
所需正则代码:
import re

# 导入要处理的字符串
chars = r'<html><body><div>I Love Python</div><div>I Also Love C#</div></body></html>'
# 输入想要获得的字符串的正则表达法
regular_char = r'(?<=<div>).+?(?=</div>)'
# 对正则表达式进行编译
char_compile = re.compile(regular_char)
# 在字符串中查找编译出的正则表达式
content = re.findall(char_compile, chars)
# 打印输出
print(content)
解释regular_char = r'(?<=<div>).+?(?=</div>)'

r: 这个大家都应该知道,r是防止‘\’字符最后面内容转义,保持字符串原始值
?<=: 代表所要匹配的内容在‘?<=’之后
?=: 代表所要匹配的内容在‘?=’之前
.: 可以代表任何一个字符(包括它本身)
+: 将前面一个字符或一个子表达式重复一遍或者多遍
?: 避免正则表达式的贪婪(只匹配一个)

compile函数

compile(a)是python对正则表达式的编译函数,实现对正则表达式a向字符串的编译。

findall函数

findall(a,b)正则所有的查找函数,查找所有b中的a。

-----------------------------------头次发文,菜鸟---------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值