找到“%”后,正则表达式停止搜索

2024-09-29 01:38:44 发布

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

import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('[A-Za-z_](?!%)')
for i in y.findall(x):
    print(i,end='')

这是一个例子,我希望搜索在找到%后立即停止,并在它们之间打印前面的单词。在这个例子中,它应该是Biblioteca Nacional de Espa,我找到了这个链接Regex stop searching at specific string,但它太复杂了,任何帮助都将不胜感激


Tags: inimportreforde单词例子end
1条回答
网友
1楼 · 发布于 2024-09-29 01:38:44

正则表达式[A-Za-z_](?!%)与字符集中没有%的单个字符匹配。因此它不会只打印a3字符之前出现的a和{},并打印字符集中的每个字符。但不要认为您想要这样,因为您的预期输出是Biblioteca Nacional de Espa

你可以用这个正则表达式

(?<!%)([a-zA-Z]+)(?=.*%)

查找所有匹配的输入。下面是一个python代码示例

^{pr2}$

它打印出来了

Biblioteca Nacional de Espa

如果您在帖子中出现了错误,并且确实想捕获Biblioteca_Nacional_de_Espa,那么您只需在字符集中保留下划线(我删除了),正则表达式就变成了

(?<!%)([a-zA-Z_]+)(?=.*%)

你的python代码变成了

import re
x=r'Biblioteca_Nacional_de_Espa%C3%B1a'
y=re.compile('(?<!%)([a-zA-Z_]+)(?=.*%)')
tokens = y.findall(x)
print(' '.join(tokens))

哪些输出

Biblioteca_Nacional_de_Espa

相关问题 更多 >