2012-03-09 1 views
1

У меня есть следующие BB-коды, которые мне нужно было разобратьREGEX шаблон, чтобы иметь дело с или без кавычек

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

То, что я пытаюсь сделать, это извлечь как http://www.google.com и Google

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

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

Спасибо!

EDIT: Только для уточнения. Я в настоящее время использую следующий Regex шаблона:

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

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

+0

Да. Что вы хотите, чтобы регулярное выражение делало? Создайте элемент 'a'? Что-то другое? И [что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/). –

+0

Возможно, что вы хотите, но более эффективно просто удалить все кавычки раньше времени 's /" // g; ' – vol7ron

ответ

2

Да:

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

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

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

+1

@downvoter: Помогите объяснить почему? – ruakh

+0

Вы правы, я могу обрабатывать фактическую часть url, I просто нужно, чтобы регулярное выражение соответствовало шаблону, если URL имеет кавычки или нет, но если у него есть кавычки, он должен отбрасывать кавычки. Но ваш шаблон будет соответствовать кавычкам или кавычкам, но если есть кавычки, он фактически не отменяет цитаты – Mark

+0

@Mark: Я не знаю, что вы имеете в виду. Вторая группа захвата не будет включать в себя кавычки. Регулярное выражение не может фактически «отбрасывать» вещи. – ruakh

2

Чтобы сделать его более вы бы сделали примерно следующее:

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

, который предоставит вам URL-адрес в \ 1 и t он помечен в \ 2

+0

Благодарим вас за исправление. Я обновил его сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^