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

2024-09-28 03:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

如何实现Luafrontier pattern

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

在Python正则表达式中?在


Tags: 字符串字符patternsetluafrontier
1条回答
网友
1楼 · 发布于 2024-09-28 03:18:09

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

import re

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

产量:

^{pr2}$

来自the docs

(?=...) Matches if ... matches next, but doesn’t consume any of the string. This is called a lookahead assertion. For example, Isaac (?=Asimov) will match 'Isaac ' only if it’s followed by 'Asimov'.

与其中一个注释相反,lookahead表达式并不局限于“固定长度字符串”,至少就我所理解的那样。例如:

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'

在这里,lookahead是一个相当扩展的子模式,它具有可变的长度和嵌入的通配符以及它自己的子表达式。在

相关问题 更多 >

    热门问题