加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Pyhthon之正则表达式

发布时间:2020-12-14 04:19:40 所属栏目:百科 来源:网络整理
导读:match 、 search、findall的区别 match从字符串的开头开始匹配,如果开头没有匹配到,search是从字符串任意位置开始匹配。 上面两个都是匹配到一个就停止匹配。findall是返回所有能匹配上的字符串列表 re.match restr=result1=re.match(,str)result1.group()

match 、 search、findall的区别

match从字符串的开头开始匹配,如果开头没有匹配到,search是从字符串任意位置开始匹配。

上面两个都是匹配到一个就停止匹配。findall是返回所有能匹配上的字符串列表


re.match

re
str=result1=re.match(,str)
result1.group()
pythonre_test.py
<_sre.SRE_Matchobjectat0x10584fa58>
123


开头匹配不到则返回None

pythonre_test.py
None


re.search

匹配到一次就停止

re
str=result2=re.search(,str)
result2
result2.group()
pythonre_test.py
<_sre.SRE_Matchobjectat0x108475a58>
123


re.findall

findall返回的是列表

re
str=result3=re.findall(,str)
result3
pythonre_test.py
['123','123123']


匹配不到则返回空列表

pythonre_test.py
[]


re.compile

可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。下面是一个正则表达式对象的一个例子:

text=regx=re.compile()regx.findall(text)
pythonre_test.py
['JGood','cool']


group和groups的区别

先看一个示例

re
result=re.search(,)
result.group()
result.groups()
pythonre_test.py
123asdf234
('123','234')

从上面的示例可以看出group会返回到正则表达式中所有的符合规则的内容,而groups只会返回分组(即括号括起来的为一组)中的内容。


正则表达式常用格式:

字符

d:表示数字

w:字母、数字、下划线、中横线

t:制表符

. :除了回车以外的所有字符


次数

*:匹配前面的字符0次或者多次 相当于>=0

+:匹配前面的字符1次或者多次 相当于>=1

?:匹配前面的字符0次或者1次

{m}:匹配前面的字符m次

{m,n}:匹配前面的字符至少m次,至多n次


正则表达式匹配IP地址

最简单的方法:

ip==re.findall(,ip)
pythonre_test.py
['192.168.1.200']

改进后的方法:

ip=result=re.findall('(?:d{1,3}.){3}d{1,3}',ip)
result

思路:第一种方法中,"[0-9]{1,3}."出现了三次,所以我们把这一串字符当做一个整体匹配3次即可


(?:pattern) :表示非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读