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

概念:

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

python提取字符串方式示例:


	
		

get these chars

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

chars = '

get these chars

' chars_index_min = chars.find('

') + 3 chars_index_max = chars.find('

') print(chars[chars_index_min:chars_index_max])

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

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

import re

chars = r'

get these chars

' my_chars = r'(?<=

).+?(?=

)' # 写出我们想要获取的内容的正则表达式 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中的内容:

    
        
I Love Python
I Also Love C#
所需正则代码:
import re

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

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

compile函数

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

findall函数

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

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

你可能感兴趣的:(python)