0

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

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

类型:惊悚, 冒险, 动作

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

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

有什么建议吗?

4

1 回答 1

2

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

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

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

如果我是对的,第一个将与数字匹配,但如果失败,它将落入更一般的情况。

编辑:实际上,它可能会执行以下操作:

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

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

于 2013-01-21T01:12:46.833 回答