gpt4 book ai didi

带有方括号 [] 的 Python 正则表达式行为

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:13 26 4
gpt4 key购买 nike

这是文本文件 abc.txt

abc.txt

aa:s0:education.gov.in
bb:s1:defence.gov.in
cc:s2:finance.gov.in

我正在尝试通过使用以下正则表达式在每个“:”处标记化(如果这是不正确的术语,请纠正我:))来解析此文件。

解析器.py

import re,sys,os,subprocess
path = "C:\abc.txt"
site_list = open(path,'r')
for line in site_list:
site_line = re.search(r'(\w)*:(\w)*:([\w\W]*\.[\W\w]*\.[\W\w]*)',line)
print('Regex found that site_line.group(2) = '+str(site_line.group(2))

为什么输出是

Regex found that site_line.group(2) = 0
Regex found that site_line.group(2) = 1
Regex found that site_line.group(2) = 2

有人可以帮我理解为什么它匹配第二组的最后一个字符吗?我认为它匹配来自 s0 的 0,来自 s1 的 1 和来自 s2 的 2

但是为什么?

最佳答案

让我们展示一个简化的例子:

>>> re.search(r'(.)*', 'asdf').group(1)
'f'
>>> re.search(r'(.*)', 'asdf').group(1)
'asdf'

如果在捕获组周围有一个重复运算符,则该组会存储最后一次重复。将组放在重复运算符周围即可完成您想要的操作。

如果您希望看到第三组的数据,那就是 group(3)group(0)为整场匹配,group(1)group(2)等通过实际括号内的捕获组进行计数.

也就是说,正如评论所暗示的那样,正则表达式对此有点矫枉过正。

>>> 'aa:s0:education.gov.in'.split(':')
['aa', 's0', 'education.gov.in']

关于带有方括号 [] 的 Python 正则表达式行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28679911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com