我使用以下正则表达式在论坛帖子中查找IMG bbcodes及其内容:
~\[img(?:=[\'"]?([^,]*?)(?:,[^]\'"]+)?[\'"]?)?]([^\[]+)?\[/img]~i
到目前为止,这是有效的,但我需要定义例外。我必须找到所有IMG bbcode,它们不被TT或CODE bbcode包围。我没有尝试解析BBCodes(因为这是由论坛软件本身完成的)。
所以我想从这里获取img bbcode(使用上面的正则表达式工作):
Hello, this is an example: [img]xxx[/img] - Yay!
但不是从那里
[tt]this is a test [img]xxx[/img] yolo![/tt]
而不是从这里
[code=php]<?php
echo '[img=xxx][/img]';[/code]
任何想法,如何实现这一目标?我使用PHP(以防万一,只能使用正则表达式解决方案)。
答案 0 :(得分:1)
您可以将此模式用于匹配的第二个子模式
\[((?:(?!img).)*?)\](?:.*?)\[\/\1\]|\[img.*\](.*?)\[\/img\]
答案 1 :(得分:0)
您也可以使用T-Regx library
pattern('\[((?:(?!img).)*?)\](?:.*?)\[\/\1\]|\[img.*\](.*?)\[\/img\]')->match($input)