gpt4 book ai didi

regex - 通过扩展现有的正则表达式匹配匹配

转载 作者:行者123 更新时间:2023-12-04 10:58:45 25 4
gpt4 key购买 nike

我试图看看是否有可能通过预先或附加另一个正则表达式来扩展现有的任意正则表达式以匹配匹配项。

以下面的例子为例:

原来的正则表达式是 cat|car|bat所以匹配输出是

cat
car
bat

我想添加到这个正则表达式中,只输出以“ca”开头的匹配项,
cat
car

我特别不想解释整个正则表达式,这可能是一个很长的操作,然后更改其内部内容以匹配生成输出,如下所示:

^ca[tr]

或运行原始正则表达式,然后在结果上运行第二个。我将原始正则表达式作为 python 中的参数,但想通过添加附加代码来“预过滤”匹配项。

这可能是对正则表达式的轻微滥用,但如果可能的话,我仍然很感兴趣。我已经尝试了我所知道的子组和以下示例,但它们没有给我我需要的东西。

我尝试过的事情:
^ca(cat|car|bat)
(?<=ca(cat|car|bat))
(?<=^ca(cat|car|bat))

这可能是不可能的,但我对任何正则表达式大师的想法很感兴趣。如果初始输出的长度已知,是否有某种方法可以在位置上执行此操作,我也很感兴趣。

初始查询的一个更现实的例子可能是 [a-z]{4} 但如果我创建 (?<=^ca([a-z]{4})) 它匹配以 ca 开头的 6 个字母字符串,而不是 4 个字母。

感谢您提供任何解决方案和/或意见。

编辑:请参阅下面的解决方案,包括@Nick 的贡献。我使用 (exrex) 测试的工具似乎有一个小错误,按照给出的示例,它会创建 6 个字符长的匹配项。

最佳答案

您与尝试的方法相距不远,只是您不需要后视,而是前瞻断言,并且括号放错了位置。正确的做法是:将原始模式放在括号中,并添加 (?=ca) :

(?=ca)(cat|car|bat)
(?=ca)([a-z]{4})

在第二个示例中(没有 | 替代方案),不需要原始模式周围的括号。

关于regex - 通过扩展现有的正则表达式匹配匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com