正则表达式

文章目录

基本概念

正则表达式:字符串的处理方式,是通用的字符串方法。
字符组:同一位置上可能出现的各种字符,方括号之间列出所有可能出现的字符,例如:[0-9a-zA-Z]、[#.?],注意是一位和一个数。其中字符出现顺序和出现次数对字符组没有影响。
字符组的范围表示法:[ASCII码小的-码大的]
正则表达式

元字符:具有特殊意义的字母,比如-表示范围。若想表达其本身含义,需用转义字符\转义。
排除型字符组:,在字符组方括号开始后加上^,写成[^0-8],表示当前位置上,匹配一个括号内没有列出的字符,即匹配不是0-8的数字(9)。此外^可以用于正则表达式的开始处,表示起始位置;$可以用于正则表达式的结束处,表示结束位置。^[^0-9][0-9]$表示匹配以非数字开头,数字结尾的两位字符。

常用
. :任意字符
字符组[0-9]表示数字,[a-z]表示小写字母,[A-Z]表示大写字母
\d:表示数字     \iff⟺[0-9]
\w:表示单词     \iff⟺[-0-9a-zA-Z],单词字符包括数字、字母、下划线;
\s:表示空白字符     \iff⟺ [ \t\n\v\r\f](第一个字符为空格),空白字符是一些特殊转义字符,如\t制表符,\n换行符,\r回车符等等。
\D:表示非数字字符,
\W:表示非单词字符,
\S:表示非空白字符。是对普通字符组简记的互补,利用其互补特性,可以实现全集效果,如[\d\D]、[\w\W]、[\s\S]均可表示匹配任意字符。

量词
*:重复任意次(0次或多次)
+:重复1次或多次
?:重复0次或1次
{n}:重复n次
{n,}:重复n次或更多次
{n,m}:重复n到m次

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配。.,*,+适用
后面加上?为将贪婪匹配模式转为非贪婪匹配模式,会匹配尽量短的字符串

参考此博文:https://www.cnblogs.com/shenjianping/p/11647473.html


Python之re模块

1.regex = re.compile(pattern)
将pattern编译成可复用的正则表达式对象,一次编译多次使用,有利于节约CPU周期,将相同的pattern应用到多个字符串上时。

2.regex.split(text)
将text按pattern分隔

text = "foo   bar\t baz  \tqux"
regex = re.compile('\s+')  # 该pattern匹配所有空白字符
regex.split(text)  # 将text按pattern分隔,['foo', 'bar', 'baz', 'qux']

3.newtext = regex.sub(‘new’,text)
将text中的所有匹配项替换为‘new’

regex.sub(':',text)  # 将text中的所有匹配项替换为‘:’,foo:bar:baz:qux

regex.subn() : 替换第n个出现的匹配串
使用\1,\2,…来引用替换字符串中的匹配组元素

4.regex.findall(text) :查看text中所有能够匹配到的模式
regex.search(text) :返回text中第一个匹配项
regex.match(text) :只在pattern出现在text起始位置时才匹配,没有匹配到返回None

regex.findall(text)  # 查看text中所有能够匹配到的模式:['   ', '\t ', '  \t']
regex.search(text)  # 返回text中第一个匹配项:match='   '
regex.match(text)   # 只在pattern出现在text起始位置时才匹配,没有匹配到返回None
正则表达式正则表达式 wbing96 发布了24 篇原创文章 · 获赞 6 · 访问量 1151 私信 关注
上一篇:Java正则匹配的一些小例子(待更新)


下一篇:webmagic 爬虫爬取某些网址URL的Regex过滤不生效