正则表达式基础(未完)

入门

一、行起始和结束『^』『$』

# ^ 和 $
^cat #匹配c作为一行的第一个字符,紧接着第二个a,第三个t
cat$ #匹配t作为一行的最后一个字符,紧接着第二个a,第三个c

二、字符组『[]』『[^]』

#匹配若干字符之一
r = "apple "
re = re.match('ap[ap]le',r)#匹配apple和apale
print(re.group())
>>>apple

#排除型字符组
[^1-6]#排除1到6以外的任意字符:[]内,^排除;[]外,^开头
#理解为匹配出一个未列出的字符,而不是不要匹配出的字符

三、用点号匹配任意字符『.』

例如我们需要搜索一个“04/11/98”、“04-11-98”、“04.11.98”
可以用到

#不机智的方法
04[-./]11[-./]98
#机智的方法
04.11.98

注意:

在字符组外和内,元字符的定义和意义是不一样的比如那个点号,其中[-./]中的-也不算元字符,因为正确用法不是在 [ 或 [^ 之后而是[.-/]所以不被当做元字符

四、多选结构『|』

字符 | 意思是or
比如apple和apale要查找这两个字符

apple|apale   #查找apple or apale

#可以用括号来划定多结构的范围
ap(a|p)le     #查找ap(p or a)le

^(From|Date|Sub):     #匹配^From:和^Date:和^Sub:
^From|Date|Sub:       #匹配^From和Date和Sub:

注意:

一个字符组只能匹配目标文本中单个字符,而每个多选结构自身可能就是完整的正则表达式,都可以匹配任意长度的文本

五、忽略大小写

在egrep中使用-i即可
例子:

egrep -i '^(From|Date|Sub):' filename 

六、单词分界符『<』『>』

匹配英语单词
<和>不是元字符,通过转移才有特殊的含义
<单词起始位置
>单词结束位置

未验证成功

七、量词- 可选项元素『?』

?前的容许出现改字符,但是不是必选项

a = apple
b = aple
#要想让两个字符都可以匹配就可以这样写
app?le#匹配『a』『p』『p?』『l』『e』其中『p?』表示这个字符不是匹配成功的必要条件

八、量词-重复出现『+』『*』

原文地址:https://www.cnblogs.com/ctccaozhe/p/13221815.html