【发布时间】:2013-11-29 23:28:54
【问题描述】:
在以下错误代码中,我希望找到每个匹配项的以下信息。
- 已找到替代
\w+或\d+。 - 找到的匹配文本中的位置。
我想将它与两个以上的基本选择一起使用。不使用蛮力有可能吗?
错误代码
#! /usr/bin/env python3
import re
pattern = re.compile(r"(\w+)|(\d+)")
text = "a word or 2, or three"
for x in pattern.findall(text):
print(x)
输出
('a', '')
('word', '')
('or', '')
('2', '')
('or', '')
('three', '')
预期输出
('a', 0, '(\w+)')
('word', 2, '(\w+)')
('or', 7, '(\w+)')
('2', 10, '(\d+)')
('or', 13, '(\w+)')
('three', 16, '(\w+)')
【问题讨论】:
-
@projetmbc 你的意思是这样的吗? See here..
-
@HamZa 你有一个小例子吗?
-
@projetmbc Something like this
(?P<word>[^\W\d_]+)|(?P<digits>\d+). -
它没有被明确提及,所以我要说,
\w将匹配数字,你必须像 Hamza 那样使用[^\W\d_],或者[A-Za-z] -
@HamZa 在您的帮助下,我可以使用
print((m.group(), m.start(), [x for x in ['word', 'digits'] if m.group(x) != None][0]))找到比赛的名称。有没有更优雅的方式?
标签: python regex python-3.x