如何实现Lua frontier pattern
%f[set]匹配任意位置的空字符串,以便下一个字符属于set,而前一个字符不属于set
在Python regex中?
发布于 2017-07-17 11:54:52
您可能正在寻找正则表达式中的“先行”模式。例如:
import re
s = 'there is 1more 2go 3fold'
#
pat = re.compile('(?=[12])')
for m in pat.finditer(s):
print(m.start())收益率:
9
15来自the docs
(?=...)匹配条件是...匹配next,但不消耗任何字符串。这称为先行断言。例如,Isaac (?=Asimov)只有在后面跟'Asimov‘时才会匹配'Isaac’。
与评论中的一个相反,先行表达式并不局限于‘固定长度字符串’,至少就我所理解的描述而言是这样。例如:
s = 'there is 1Fmore 1Gother 21go 3fold 3slambam'
pat = re.compile('(?=(1F|2|3sl.[mn]))')
for m in pat.finditer(s):
print(m.start(), repr(s[m.start():]))收益率:
9 '1Fmore 1Gother 21go 3fold 3slambam'
24 '21go 3fold 3slambam'
35 '3slambam'这里的先行是针对一个具有不同长度的、具有嵌入的通配符和它自己的子表达式的相当可扩展的子模式。
https://stackoverflow.com/questions/45135704
复制相似问题