正则表达式匹配顺序
本文关键字:顺序 正则表达式 | 更新日期: 2023-09-27 17:54:53
从这个可能的输入中,我想添加粗体文本:
类型:惊悚、冒险、动作, 2012
类型:惊悚、冒险、动作
我做了这样的事情(?<=Genre: ).*(?=(, 'd{4})?)
我的问题是,我把这部分(, 'd{4})?
希望,因为有匹配", 2012"
,它会停止在这一点,但它不是,它只是忽略匹配…
任何建议吗?
.*
是贪婪的,所以它会消耗任何它能消耗的东西。由于带有数字的最后一部分是可选的,因此全部由.*
消耗。
可能有一种更有说服力的方法,但可能只有两个正则表达式:
(?<=Genre: ).*(?=(, 'd{4}))|(?<=Genre: ).*
如果我是对的,第一个将在情况下与数字匹配,但如果失败,它将通过更一般的情况
Edit:实际上,它可能会像下面这样工作:
(?<=Genre: ).*?(?=(, 'd{4})|$)
这样.*
就不是贪婪的,但是它必须消耗所有内容,直到数字或字符串的末尾。