正则表达式(规则表达式:Regular Expression),通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。
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 | 匹配制表符 |
?<= : 所匹配的内容在(?<=)之后
?= : 所匹配内容在 (?=)之前
I Love Python
I Also Love C#
import re
# 导入要处理的字符串
chars = r'I Love PythonI 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(a)是python对正则表达式的编译函数,实现对正则表达式a向字符串的编译。
findall(a,b)正则所有的查找函数,查找所有b中的a。
-----------------------------------头次发文,菜鸟---------------------------------------