我使用以下正则表达式在论坛帖子中查找IMG bbcode及其内容:
~'[img(?:=[''"]?([^,]*?)(?:,[^]''"]+)?[''"]?)?]([^'[]+)?'[/img]~i
到目前为止,这是有效的,但我需要定义例外。我必须找到所有的IMG bbcode,它们没有被TT或CODE bbcode包围。我并没有试图解析BBCodes(因为这是由论坛软件本身完成的)。
因此,我想要来自这里的img bbcode(它正在工作,使用上面的regex):
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(只是以防万一,只使用正则表达式的解决方案是不可能的)。
您也可以使用T-Regx库
pattern(''[((?:(?!img).)*?)'](?:.*?)'['/'1']|'[img.*'](.*?)'['/img']')->test($input)
您可以将此模式用于匹配的第二个子模式
'[((?:(?!img).)*?)'](?:.*?)'['/'1']|'[img.*'](.*?)'['/img']
http://regex101.com/r/tF1tX3/2