从这个可能的输入我想要加工粗体文字:
类型:惊悚,冒险,行动,2012
类型:惊悚,冒险,行动
我做了类似(?<=Genre: ).*(?=(, \d{4})?)
我的问题是我把这个部分(, \d{4})?
希望因为匹配", 2012"
它会在此时停止但不是,它只是忽略匹配...
有什么建议吗?
答案 0 :(得分:2)
.*
贪婪,所以它会消耗任何东西。由于带有数字的最后一部分是可选的,所有这些都被.*
消耗。
可能有一种更有说服力的方式,但可能只有两个正则表达式:
(?<=Genre: ).*(?=(, \d{4}))|(?<=Genre: ).*
如果我是对的,那么第一个将匹配数字的情况,但如果失败,它将落入更一般的情况。
编辑:实际上,可能会执行以下操作:
(?<=Genre: ).*?(?=(, \d{4})|$)
这样.*
并不贪心,但必须消耗所有数字或字符串结尾的所有内容。