RegEx匹配帮助

时间:2011-09-06 21:19:21

标签: java regex

这是输入字符串:

#video:firstVideo.mp4#
#video:secondVideo.mp4 title:Title of second Video#
#video:thirdVideo.mp4#

我想匹配以上所有行(标题:属性是可选)。但是,下面的Java RegEx仅匹配第二个行。

(?<=#)video:(.*?).mp4\stitle:(.*?)(?=#)

如何更正此RegEx以使标题:属性可选并返回所有三行?我将投票给任何有效/高效答案的人!

2 个答案:

答案 0 :(得分:3)

试试这个:

    (?<=#)video:(.*?).mp4(\stitle:(.*?))?(?=#)

或者只是:

    #video:(.*?).mp4(?:\stitle:.*?)?#

请参阅rubular

这取决于您希望在匹配组中拥有的内容。

答案 1 :(得分:2)

您应该能够将可选标题部分放入非捕获组,然后使用?使其成为可选项:

(?<=#)video:(.*?).mp4(?:\stitle:(.*?))?(?=#)