我有那根线

  • string = 'fail alm alarm'
  • 我想要匹配的一组子字符串substrings=[norm,alm,fail].

但是,我希望normalm的匹配优先级高于fail.

我写了pattern=r'norm|alm|fail'

thinking that since norm and alm appear before fail they would be given priority but
re.search('norm|alm|fail', 'fail alm alarm') returns

<re.Match object; span=(20, 24), match='fail'>

但我希望它能返回alm美元.

事先感谢您的帮助

推荐答案

正则表达式中的顺序只影响正则表达式引擎try 在current位置查找匹配项的顺序.

为了实现你想要的,你需要向前看,当你走向"失败"的时候,你需要判断没有"规范"或"ALM".这样做的模式是:

norm|alm|fail(?!.*(?:norm|alm))

Python相关问答推荐

Pandas或pyspark跨越列创建

只需使用Python在图像中保留 colored颜色 范围区域

如何将不同长度的新列添加到现有的框架中

如何在telegram 机器人中发送音频?

使用imap-tools时错误,其邮箱地址包含域名中的非默认字符

在Python中为变量的缺失值创建虚拟值

从webhook中的短代码(而不是电话号码)接收Twilio消息

删除最后一个pip安装的包

沿着数组中的轴计算真实条目

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

从dict的列中分钟

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

删除字符串中第一次出现单词后的所有内容

对所有子图应用相同的轴格式

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

Asyncio:如何从子进程中读取stdout?

Django admin Csrf令牌未设置

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

旋转多边形而不改变内部空间关系