首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中实现Lua frontier模式?

如何在Python中实现Lua frontier模式?
EN

Stack Overflow用户
提问于 2017-07-17 11:47:37
回答 1查看 279关注 0票数 0

如何实现Lua frontier pattern

%f[set]匹配任意位置的空字符串,以便下一个字符属于set,而前一个字符不属于set

在Python regex中?

EN

回答 1

Stack Overflow用户

发布于 2017-07-17 11:54:52

您可能正在寻找正则表达式中的“先行”模式。例如:

代码语言:javascript
复制
import re

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

收益率:

代码语言:javascript
复制
9
15

来自the docs

(?=...)匹配条件是...匹配next,但不消耗任何字符串。这称为先行断言。例如,Isaac (?=Asimov)只有在后面跟'Asimov‘时才会匹配'Isaac’。

与评论中的一个相反,先行表达式并不局限于‘固定长度字符串’,至少就我所理解的描述而言是这样。例如:

代码语言:javascript
复制
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():]))

收益率:

代码语言:javascript
复制
9 '1Fmore 1Gother 21go 3fold 3slambam'
24 '21go 3fold 3slambam'
35 '3slambam'

这里的先行是针对一个具有不同长度的、具有嵌入的通配符和它自己的子表达式的相当可扩展的子模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45135704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档