我掙扎在內容主體檢測這些模式:正則表達式來匹配帶或不帶緊標籤的標籤?
[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]' –