my kernel of RE

特殊字符(集合)

# 自定字符集
'''
自定字符集
[0-9]  匹配0-9(0,1,2,3,4,5,6,7,8,9)任一的单个字符
[^0-9] 匹配除了0-9以外的单个字符
[0-9f] 匹配0-9和f这些之一的单个字符
[0-9]|[f] 和[0-9f]等价
'''
# 特殊字符集
'''
常用字符集合
\d    [0-9]
\D    [^\d]
\w    [a-zA-Z0-9_]数字字母下划线认为是单词的组成部分
\W    [^\w]

\s    [\r\n\f\t\v]全部的空白字符
\S    [^\s]
.    [^\n\r]除了换行符和回车符以外的所有字符,其中回车符可以视为硬换行,换行符视为软换行
[.] 匹配句号.字符
'''

# 特殊字符:空白字符
'''
空白字符(格式符,一般看不见)
\n    换行:仅换行
\r    ente[r],回车符
\p    是dos命令行(包括windows命令行)的终止符,等价于\r\n
\f    换页符

\t    tab符,控制水平缩进,叫水平制表符
\v    vertical符,控制垂直缩进,叫垂直制表符
'''

字符重复次数

'''
{}匹配前一个字符的可重复次数
例如:adsfd{}就是匹配d的可重复次数
下面介绍可重复次数的书写方式
{0,}    至少重复出现0次
{1,}    最少重复出现1次
{1,3}    最少重复出现1次,最多重复出现3次
有一些简写版的含义类似的符号*+?
*    {0,}    n*0=0
+    {1,}    1+1=2
?    {0,1}    三元运算符true1 false0
'''

正则中的多行匹配模式与定位字符

# 理论
'''
元字符之一
m    re.M    
mutiline多行匹配模式,相当于换行符为间隔分割字符串然后进行一次次的匹配
该选项的开启会导致定位字符^$的作用效果发送改变,具体如下

默认下未开启多行匹配模式:
^ 仅匹配整个字符串的开始位置
$ 仅匹配整个字符串的结束位置
当开启多行匹配模式后:
^ 匹配每行(由换行符决定)开始位置
$ 匹配每行(由换行符决定)结束位置
'''
# 举例
'''
匹配字符串中以a开头的字符串,且这个词位于结束位置
用/a[a-z]*$/m匹配
a apple
a day
keep the doctor away.
如果是默认下未开启多行模式匹配结果是
['away']
如果开启多行匹配模式后
['apple', 'ay', 'away']
'''

python中如何调用正则

# pattern = '正则语句'
'''
元字符主要有以下三种(python只能使用后者的方式)

g    re中使用findall(全部)函数和search来区分(1次)函数
global匹配所有的字符串(默认情况下成功匹配一次就不会继续匹配了)

i    re.I    
ignorance忽略大小写区别进行匹配

m    re.M    
mutiline多行匹配模式,相当于换行符为间隔分割字符串然后进行一次次的匹配

s    re.S    
re.DOTALL使得dot也就是.字符集也包含换行符号
'''
import re
# 匹配数字开开头数字结尾的字符串
pattern = '\w*\d$'
content = '''115is115
ok let us get into
115is located in computer house at room 115''' # 要被匹配的字符串
# 返回匹配对象
print('-----search-----')
res = re.search(pattern,content,re.MULTILINE)
print(res)
# 以字符串的形式返回唯一的匹配结果
print(res.group())
# 以list的形式返回所有的匹配结果
print('-----findall-----')
res = re.findall(pattern,content,re.MULTILINE)
print(res)
Last modification:December 26, 2020
如果觉得我的文章对你有用,请随意赞赏。咖啡(12RMB)进度+100%,一块巧克力(1RMB)进度+6%。
(赞赏请备注你的名称哦!后台记录中来自理工小菜狗)