【发布时间】:2019-11-22 10:19:15
【问题描述】:
我正在尝试通过预先或附加另一个正则表达式来扩展现有的任意正则表达式以匹配匹配项。
举个例子:
原来的正则表达式是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} 但如果我创建 (?
感谢您提供任何解决方案和/或意见。
编辑:请参阅下面的解决方案,包括@Nick 的贡献。我用 (exrex) 测试的工具似乎有一个小错误,按照给出的示例,它会创建 6 个字符长的匹配项。
【问题讨论】:
标签: regex filter grouping extending