北京网帮你
学习python正则表达式转义
时间:2019-11-04 23:50:21 浏览:129


学习python正则表达式转义

特殊符号:

.  *  ?  $  []  ()  {} ^  \  

In [59]: re.findall('17\.36',"17.36")
Out[59]: ['17.36']

In [62]: re.findall('ok\?','Are your ok?')
Out[62]: ['ok?']


r---raw 字符串 :原生字符串,字符串的内容就是字                   符串本身,不进行任何转义处理


贪婪和非贪婪

贪婪模式:正则表达式的重复默认总是尽可能多的向后           匹配内容

*   +   ?  {m,n}

非贪婪模式 : 尽可能少的匹配内容

贪婪  ---》 非贪婪   *?  +?  ??  {m,n}?

In [77]: re.findall(r'ab*?',"abbbbbcde")
Out[77]: ['a']

In [78]: re.findall(r'ab+?',"abbbbbcde")
Out[78]: ['ab']

正则表达式分组

可以使用()为一个正则表达式建立子组,子组可以看做正则表达式的一个局部整体

子组的作用
1. 子组作为局部整体可以改变某些元字符的行为,比如重复,或等

In [85]: re.search(r'(ab)+','ababababcdef').group()
Out[85]: 'abababab'

In [89]: re.search(r'.+(\.com|\.cn)','abc@123.cn').group()
Out[89]: 'abc@123.cn'

2.  子组在某些操作中可以单独提取匹配内容

In [92]: re.search(r'(ab)+','ababababcdef').group(1)
Out[92]: 'ab'


子组使用注意事项
* 一个正则表达式中可以有多个子组,正则表达式依然是通过整体匹配内容。

* 子组由外到内,由左到右为第一  第二 第三。。。子组
  ((ab)cd(ef)g)        abcdefg  ab   ef

* 子组内容不会重叠
 
捕获组和非捕获组 (命名组,非命名组)

格式: (?P<name>pattern)

In [94]: re.search(r'(?P<dog>ab)cdef','abcdefgh').group()Out[94]: 'abcdef'

命名作用 :
1. 很多编程接口可以通过名称获取指定组的内容
2. 命名组可以被重复调用
   格式 : (?P=name)

In [99]: re.search(r'(?P<dog>ab)cd(?P=dog)',"abcdab").group()
Out[99]: 'abcdab'

[上一篇]学习python正则表达式设计原则
[下一篇]学习python正则表达式17个知识点
Copyright 2022 © 93580.com.cn 网帮你

2022 © 版权所有 红花岗区网帮你信息技术工作室

工信部备案号:黔ICP备2024036985号-2

请使用网帮你微信扫码登录