正则表达式匹配顺序

本文关键字:顺序 正则表达式 | 更新日期: 2023-09-27 17:54:53

从这个可能的输入中,我想添加粗体文本:

类型:惊悚、冒险、动作, 2012

类型:惊悚、冒险、动作

我做了这样的事情(?<=Genre: ).*(?=(, 'd{4})?)

我的问题是,我把这部分(, 'd{4})?希望,因为有匹配", 2012",它会停止在这一点,但它不是,它只是忽略匹配…

任何建议吗?

正则表达式匹配顺序

.*是贪婪的,所以它会消耗任何它能消耗的东西。由于带有数字的最后一部分是可选的,因此全部由.*消耗。

可能有一种更有说服力的方法,但可能只有两个正则表达式:

(?<=Genre: ).*(?=(, 'd{4}))|(?<=Genre: ).*

如果我是对的,第一个将在情况下与数字匹配,但如果失败,它将通过更一般的情况

Edit:实际上,它可能会像下面这样工作:

(?<=Genre: ).*?(?=(, 'd{4})|$)

这样.*就不是贪婪的,但是它必须消耗所有内容,直到数字或字符串的末尾。