我挣扎在内容主体检测这些模式:正则表达式来匹配带或不带紧标签的标签?
[tagname blah blah blah]blah blah blah[/tagname] // pattern 1: with close tag
[tagname blah blah blah] //pattern 2: without close tag
图案举例:
[vimeo align='center' id='123']//player.vimeo.com/video/123[/vimeo]
[vimeo align='left' id='123']
现在我想出了这个正则表达式捕获两种:
/\[(?<name>vimeo)[^\]]+\](?:(.*?)\[\/\g<name>\])?/
请注意,在(?:(.*?)\[\/\g<name>\])
的末尾有?
以使子模式可选。但是这有一个问题。它会错误地匹配[vimeo align='center' id='123']//player.vimeo.com/video/123[/youtube]
(注意结束标记是youtube
而不是vimeo
现在)
任何人都可以帮助我解决这个正则表达式吗?谢谢!
是它是。所有内容在长字符串 –
中的描述中,'[vimeo align ='center'id ='123'] // player.vimeo.com/video/123 [/ youtube]'会被正则表达式错误地捕获。 –
@anubhava我的意思是'\ [(? vimeo)[^ \]] + \](?:(。*?)\ [\/\ g \])''不应该捕获任何东西'[vimeo align ='center'id ='123'] // player.vimeo.com/video/123 [/ youtube]' –