Шаблон REGEX для работы с или без кавычек - PullRequest
1 голос
/ 10 марта 2012

У меня есть следующий BBCode, который мне нужно было проанализировать

[url=http://www.google.com]Google[/url]
[url="http://www.google.com"]Google[/url]

Я пытаюсь извлечь http://www.google.com и Google

Теперь разница между двумя вышеприведенными фрагментами BBCode заключается в кавычках вокруг URL-адреса во втором BBCode.

Возможно ли для одного кода регулярного выражения извлечь мои данные и учесть наличие или отсутствие цитат?

Спасибо!

РЕДАКТИРОВАТЬ : Просто для уточнения.В настоящее время я использую следующий шаблон Regex:

/\[URL=\"?([\s\S]*?)\"?\]([\s\S]*?)\[\/URL\]/gi

Это будет успешно соответствовать URL, если он заключен в кавычки или нет.Тем не менее, я хотел бы, чтобы окончательный результат был лишен всех цитат.Возможно ли это через сам фактический шаблон регулярного выражения просто не включать кавычки в совпадение (если они есть)

Ответы [ 2 ]

2 голосов
/ 10 марта 2012

Чтобы сделать это более общим, вы должны сделать что-то вроде этого:

/\[url=\"?(https?://[^"\]]+)"?\]([^\[]+)\[\/url\]/

, который даст вам URL в \ 1 и метку в \ 2

2 голосов
/ 10 марта 2012

Да

/\[url=("?)(http://www\.google\.com)\1\](Google)\[\/url\]/

захватит '"' или ''; 'http://www.google.com'; и 'Google'.

(я понимаю, что на самом деле вам не нужно захватывать '"' или '', но именно так регулярному выражению удается требовать, чтобы двойные кавычки либо присутствовали, либо отсутствовали. Я также понимаю, что вы вероятно, нужно охватить другие цели ссылки и тексты ссылок, помимо вашего примера, но я предполагаю, что вы уже знаете, как с этим справиться, и просто задаете вопрос о проблеме с необязательными двойными кавычками?)

...