Python入门进阶教程-原子
admin
2023-01-29 08:40:04
0

在正则表达式中,存在操作符和操作元,操作符存在优先级,操作元被称做原子
操作符优先级(由高到低)
(先不用在意操作符的名称,虽然也看不太懂)
Python入门进阶教程-原子

1. 转义符号 (Escaping Symbol):
    \
2. 分组、捕获 (Grouping or Capturing):
    (...) (?:...) (?=...) (?!...) (?<=...) (?

1. 本义字符

代表的就是它们的字面值,包括从 a 到 z,A 到 Z,0 到 9,还有 _
*注: 非本义字符:\ + . ? - ^ $ | ( ) [ ] { } < >,建议都直接加上转义符号 \ 来表示**

2 集合原子

标示集合原子,使用方括号 []。
即[abc] 的意思是说,“a or b or c”,即,abc 中的任意一个字符。
在方括号中,我们可以使用两个操作符:-(区间)和 ^(非)。

- [a-z] 表示从小写字母 a 到小写字母 z 中的任意一个字符。
- [^abc] 表示 abc 以外的其它任意字符,即,非 [abc]。

举:beg[iau]n 能够代表 begin、began,以及 begun。

注:一个集合原子中,^ 符号只能用一次,只能紧跟在 [ 之后。否则不起作用

3. 类别原子

能够代表 “一类字符” 的原子,它们都得使用转义符号再加上另外一个符号表达
\d 任意数字;等价于 [0-9]
\D 任意非数字;等价于 [^0-9]
\w 任意本义字符;等价于 [a-zA-Z0-9_]
\W 任意非本义字符;等价于 [^a-zA-Z0-9_]
\s 任意空白;相当于 [ \f\n\r\t\v](注意,方括号内第一个字符是空格符号)
\S 任意非空白;相当于 [^ \f\n\r\t\v](注意,紧随 ^ 之后的是一个空格符号)
.  除 \r \n 之外的任意字符;相当于 [^\r\n]

小技巧:d 是 digits;w 是 word characters;s 是 spaces

# 举例
import re

str = '
(843) 542-4256
(431) 270-9664
' # 找到字符串中所有"数字-数字"格式的字符,其中第一个数字是三位数,第二个数字是四位数 pttn = r'\d\d\d\-\d\d\d\d' print(re.findall(pttn, str)) # 输出 ['542-4256', '270-9664']

4. 边界原子

用边界原子指定边界。也可以称作 “定位操作符”。

^ 匹配被搜索字符串的开始位置;
$ 匹配被搜索字符串的结束位置;
\b 匹配单词的边界;er\b,能匹配 coder 中的 er,却不能匹配 error 中的 er;
\B 匹配非单词边界;er\B,能匹配 error 中的 er,却不能匹配 coder 中的 er。

注:^ 和 $ 在 Python 语言中被 \A 和 \Z 替代。

# 举例
import re

str = 'never ever verb however everest'
pttn = r'er\b'
print(re.findall(pttn, str))
pttn = r'er\B'
print(re.findall(pttn, str))

# 输出
['er', 'er', 'er']
['er', 'er']

5. 组合原子

用圆括号 () 将多个单字符原子组合成一个原子,() 内的字符串将被当作一整个原子

注意:
er 是两个原子,'e' 和紧随其后的 'r'
[er] 是一个原子,或者 'e' 或者 'r';
(er) 是一个原子,'er'

6. 数量操作符

数量操作符有:+ ? * {n, m}。用来限定位于它们之前的原子允许出现的个数,不加数量限定则代表出现一次且仅出现一次

+ 代表前面的原子必须至少出现一次,即: 出现次数 ≧ 1
? 代表前面的原子最多只可以出现一次,即:0 ≦ 出现次数 ≦ 1
* 代表前面的原子可以不出现,也可以出现一次或者多次,即: 出现次数 ≧ 0
{n} 代表之前的原子出现确定的 n 次;
{n,} 代表之前的原子出现至少 n 次;
{n, m} 代表之前的原子出现至少 n 次,至多 m 次

# 匹配字符串
str = ['google', 'gooogle', 'goooogle', 'goooooogle']

# 遍历字符串
for str_per in str:
    # o最少出现一次 
    pttn = r'go+gle'
    print(re.findall(pttn, str_per))

    # o最多出现一次 
    pttn = r'go?gle'
    print(re.findall(pttn, str_per))

    # o出现次数≧ 0
    pttn = r'go?gle'
    print(re.findall(pttn, str_per))

    # o出现至少2次,至多5次
    pttn = r'go{2,5}gle'
    print(re.findall(pttn, str_per))

    # 进阶:联立组合原子
    # g 或者 o 最少出现一次
    pttn = r'[go]+gle'

    # go 最少出现一次
    pttn = r'(go)+gle'
    print(re.findall(pttn, str_per))
  1. 或操作符 |

或操作符 | 是所有操作符中优先级最低的

import re

str = 'begin began begun begins beginn'
pttn = r'begin|began|begun'
print(re.findall(pttn, str))

# 输出
['begin', 'began', 'begun', 'begin', 'begin']

注:方括号的 | 不被当作特殊符号,而是被当作 | 这个符号本身。在方括号中的圆括号,也被当作圆括号 () 本身,而无分组含义。

关于更多python进阶知识,敬请期待!

相关内容

热门资讯

“引力一号”成功发射一箭九星,... IT之家 7 月 22 日消息,今天上午,引力一号运载火箭在上海东部海域点火升空,成功将 9 颗卫星...
特朗普向4名士兵灵柩敬礼,均阵... 当地时间7月22日,美国总统唐纳德·特朗普率领数位高官,来到位于特拉华州的多佛空军基地,参加了阵亡美...
“特朗普这么干,10年后,美国... 据南华早报7月23日报道,分析人士认为,北京如今在语言能力方面更善于解读美国战略,而美国却难以做到同...
墨西哥一市长在市政厅内遭枪击死... 综合法新社等多家外媒报道,墨西哥检方当地时间22日通报称,该国中部一地方市长在市政厅内遭枪击死亡。今...
编造传播涉汛涉灾网络谣言,公安... 为有力保障防汛救灾工作,公安机关网安部门依托“净网—2026”专项行动,持续严厉打击编造传播涉汛等涉...
松下洗衣机洗衣服操作方法 **洗衣机是一种高品质的洗衣设备,它具有简单易用的设计,使用方便。如果你是第一次使用一台**洗衣机,...
小天鹅自动洗衣机操作方法 小天鹅自动洗衣机是目前市场上比较主流的一种洗衣机,它因为具有自动化操作、节能环保、节约用水等优点,受...
全自动洗衣机进水操作方法 全自动洗衣机是现代家庭中常用的一种家电产品,使用它能够帮助我们更加方便快捷地完成家务工作,但是很多人...
中欧洗衣机操作方法 中欧洗衣机操作方法:1. 打开机门和水龙头,确认水龙头通水正常;2. 将洗好的衣服放进洗衣机内,并尽...
滚筒洗衣机漏水的原因和简单修理... 可能是因为前门视孔漏水,滚筒智能洗衣机的前门有一个圆形视孔窗部位,则是放、取衣物的部位。由于洗衣机使...