Я сейчас застрял в регулярном выражении. Я пытаюсь извлечь содержимое BB-коды, который имеет дополнительный Params и, возможно, различные обозначения:Регулярное выражение для BBCode с необязательными параметрами
[tag]https://example.com/1[/tag]
[tag='https://example.com/2'][/tag]
[tag="http://another-example.com/whatever"][/tag]
[tag=ftp://an-ftp-host][/tag]
[tag='https://example.com/3',left][/tag]
[tag="https://example.com/4",right][/tag]
[tag=https://example.com/5][/tag]
[tag=https://example.com/i-need-this-one,right]http://example.com/i-dont-need-this-one[/tag]
2-й пары могут быть просто влево или вправо, и если это дано, мне нужно URL из первых пары. В противном случае мне нужно, чтобы это было между тегами.
URL-адрес, который может быть обернут в пределах '
или "
или без каких-либо из них.
Мой текущий регулярное выражение это:
~\[tag(?|=[\'"]?+([^]"\']++)[\'"]?+]([^[]++)|](([^[]++)))\[/tag]~i
Однако, это один также включает в себя 2-й из параметров в списке матча и намного больше вещей, которые я не хочу, чтобы соответствовать.
Любые предложения?
Можете ли вы выделить отдельно каждый экземпляр и порядок, которые вы предпочитаете соответствовать? Это, вероятно, не так просто, как вы думаете. – sln
Каждый 1-й URL-адрес. Это все. – user2748261