如何在Python中实现Lua前沿模式?

时间:2017-07-17 03:47:37

标签: python regex lua

如何实施Lua frontier pattern

%f[set]匹配任何位置的空字符串,使得下一个字符属于set且前一个字符不属于set

在Python正则表达式?

1 个答案:

答案 0 :(得分:0)

你可能正在寻找正则表达式中的“超前”模式。例如:

sumb

收率:

import re

s = 'there is 1more 2go 3fold'
#     
pat = re.compile('(?=[12])')
for m in pat.finditer(s):
    print(m.start())

来自the docs

  

(?= ...)匹配if ...匹配next,但不消耗任何字符串。   这称为先行断言。例如,Isaac(?= Asimov)将匹配   “艾萨克”只有在“阿西莫夫”之后才会出现。

对比其中一条评论,前瞻性表达不仅限于“固定长度字符串”,至少在我理解该描述的情况下。例如:

9
15

收率:

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():]))

这里的前瞻是一个相当广泛的不同长度的子模式,以及嵌入的通配符和它自己的子表达式。