2024-04-23 17:35:18 发布
网友
我想使用Python正则表达式从以下组织模式行中提取三个尾随标记:
下面的代码只识别最后一个标记,但将其他两个标记放入第一个组
import re m = re.search('(.*)\s*:(.*):$','* TODO [#A] Do something important :Tag1:Tag2:Tag3:') print(m.group(1)) print(m.group(2))
结果:
我需要更改什么才能使Tags1和Tag2也属于第二组?你知道吗
如果行的主体中没有冒号,可以使用split(':'),如下所示:
split(':')
>>> s = 'TODO [#A] Do something important :Tag1:Tag2:Tag3:' >>> s.split(':') ['TODO [#A] Do something important ', 'Tag1', 'Tag2', 'Tag3', ''] >>> s.split(':')[1:-1] # get just the tags ['Tag1', 'Tag2', 'Tag3']
*是贪婪的。因此,.*将尽可能多地匹配,并且仍然允许正则表达式的其余部分匹配。要使量词非贪婪您需要在第一个捕获组中添加?。你知道吗
*
.*
?
import re s = '* TODO [#A] Do something important :Tag1:Tag2:Tag3:' m = re.search(r'(.*?)\s*:(.*):$', s) print "\n".join(m.groups())
你也可以在这里分开。你知道吗
import re s = '* TODO [#A] Do something important :Tag1:Tag2:Tag3:' m = re.split('\s+:|:$', s) print "\n".join([m[0], m[1]])
输出
* TODO [#A] Do something important Tag1:Tag2:Tag3
如果行的主体中没有冒号,可以使用
split(':')
,如下所示:*
是贪婪的。因此,.*
将尽可能多地匹配,并且仍然允许正则表达式的其余部分匹配。要使量词非贪婪您需要在第一个捕获组中添加?
。你知道吗你也可以在这里分开。你知道吗
输出
相关问题 更多 >
编程相关推荐