我尝试了很多东西,但每当我连续2次达到这个标准时,我就会坚持我的正则表达式。在这种情况下,它只是将其视为一个表达式,而不是2。
\[ame\=[^\.]+(.+)youtube\.(.+)v\=([^\]\&\"]+)[\]\'\"\&](.+)\[\/ame\]例如。
ame="http://www.youtube.com/watch?v=brfr5CD2qqY"COLOR=yellowhttp://www.youtube.com/watch?v=brfrx5D2qqY[/COLOR][/B][/ame][/U] Bor/彩色BB/彩色ame="http://www.youtube.com/watch?v=M9ak3rKIBAU"COLOR=yellowhttp://www.youtube.com/watch?v=M9a3arKIBAU[/COLOR][/B][/ame] Bor/彩色BC/彩色ame="http://www.youtube.com/watch?v=7vh--3pyq5U"http://www.youtube.com/watch?v=7vh--3pyq5U[/COLOR][/ame]
在这种情况下,这个正则表达式不是匹配所有3个选项,而是将其作为一个整体。
有什么想法吗?如何使表达式与第一个"[/ame]"匹配
发布于 2013-12-14 09:26:34
问题在于.+的使用--它们“贪婪”,这意味着它们将消耗尽可能多的输入,并且仍然匹配。
将它们更改为不情愿的量词:.+?,如果最后一次匹配,它不会跳到第一次匹配的末尾。
发布于 2013-12-14 09:02:41
我不知道你的目标是什么(你还没说清楚)
但这将匹配并为您获取youtube URL,确保您只匹配[ame=和[/ame]之间的每个实例
/\[ame=["'](.*?)["'](.*?)\/ame\]/i
下面是一个有用的例子,还有一个很好的沙箱,可以在里面玩:http://regex101.com/r/jR4lK2
https://stackoverflow.com/questions/20580235
复制相似问题