正则表达式:匹配单个字符,中间不匹配字符

时间:2016-12-10 18:14:20

标签: python regex

我有一个简单的正则表达式查询。

这是输入:

span()

所需的输出是粗体字符的位置。 DLWLAL的 DY VA 取值 QASV

所以它将是D:6,Y:7,S:10。

我正在使用python,所以我知道我可以使用start()DY.{2}S来获取匹配的起始位置。但是如果我尝试使用类似的东西:{{1}}它将匹配两者之间的字符,只给我匹配的第一个(以及跨度的最后一个)字符的位置。

是否有功能或方法来检索每个指定字符的位置,不包括中间的字符?

1 个答案:

答案 0 :(得分:1)

match = re.search(r'(D)(Y)..(S)', 'DLWLALDYVASQASV')
print([match.group(i) for i in range(4)])
>>> ['DYVAS', 'D', 'Y', 'S']
print([match.span(i) for i in range(4)])
>>> [(6, 11), (6, 7), (7, 8), (10, 11)]
print([match.start(i) for i in range(4)])
>>> [6, 6, 7, 10]

您可以将正则表达式的子表达式放入括号中,然后通过匹配对象访问相应的子字符串。有关详细信息,请参阅Match对象的documentation