Я пробовал много способов сделать это, единственное, что, кажется, частично делает то, что я хочу, - это отрицательное выражение, описанное в String negation using regular expressions и How to negate specific word in regex?, но я могу 'заставить его работать с моим текущим регулярным выражением.PHP Regex - отрицать совпадение, если оно содержит слово (строка)
Предполагая, что у меня есть эта строка:
[url=http://www.example.com]this url BB tag should match[/url]
[url=http://www.example.com][spoiler]this url BB tag shouldn't match[/spoiler][/url]
Edit: Подробнее строка углубленные, которая не должен возвращать матч для отладки:
[url=http://www.example.com]Lorem[spoiler]this url BB tag shouldn't match[/spoiler]Ipsum[/url]
И текущего шаблона регулярного выражения:
#\[url=([\w]+?://.*?)\]([^?\n\r\t].*?)\[/url\]#is
Редактировать: Я использую следующее регулярное выражение (без # и #is) для его отладки в Regex Buddy:
\[url=([\w]+?://.*?)\]([^?\n\r\t].*?)\[/url\]
(эти 2 регулярное выражение должно иметь тот же эффект на моем приложении, как я могу легко адаптировать его, поэтому работать с ним, если это имеет смысл)
будет соответствовать обе строки в строке , Я хочу, чтобы он не возвращал совпадение, когда между [url=xxxx://yyyy]
и [/url]
есть строка [spoiler]
.
Я думаю, что это можно сделать с негативным взглядом, но я не могу найти способ вставить его в текущее регулярное выражение, не превращая его в непригодное для использования.
Любая помощь приветствуется.
Он по-прежнему возвращает матч для '[URL = HTTP: //www.google.com] [спойлер] [/ спойлер] [/ URL]' на моих PHP и регулярных выражений тестировщиков. –
Вот мой тест 'preg_match ('# \ [url = ([^ \]] +) \] (?! \ [Spoiler \]) (. *?) \ [/ Url \] #', '[url = http://www.google.com] [spoiler] [/ spoiler] [/ url] ', $ m); print_r ($ m); 'Он не возвращает ничего (что вам нужно). – Rezigned
О, извините, для моего комментария выше он фактически не возвращает соответствие вашему регулярному выражению, однако, если я добавлю символ до '[spoiler]', он вернет совпадение: '[url = http: // wwww .google.com] Привет [spoiler] [/ spoiler] [/ url] ' –