2015-05-21 4 views
1

У меня есть строка, как это:Возьмите текст до определенного слова

[text="This is the title"]This is the content of the title[/text] 

И я использую регулярное выражение принимать значения, такие как This is the title, но в основном This is the content of the title ... Из этого я не могу сделай это.

Используйте следующий синтаксис регулярных выражений:

/\[text\s*\=\s*\"([^\"]*)\"\]/i 

Но тогда я не знаю, как взять весь текст до тех пор, пока не найдет слово [/text].

Спасибо всем, кто мне помогает.

+0

Можете ли вы объяснить более ясно, что, Что ваша проблема? – Kasramvd

+0

@ Kasra Посмотреть ответ karthik manchala –

ответ

1

Вы можете использовать следующее:

\[(text)\s*=\s*"([^"]*)"\](.*?)\[\/\1\] 

Объяснение:

  • \[(text)\s*=\s*"([^"]*)"\] вы знаете, что это значит ..
  • (.*?) захвата все символы в не жадный образом
  • \[\/\1\] последовал по буквальному [/, а затем назад к первой группе захвата (текст) и ]

и извлекать значения, как This is the title с $2 и ценности, как This is the content of the title с $3

См DEMO

+0

Спасибо за помощь, теперь я понимаю, где он был неправ. Единственное, что я заметил, вы использовали '?', Но не можете понять, что он делает, потому что если вы удалите его, все будет работать одинаково. Однако, еще раз спасибо. –

+0

@MicheleLapolla '?' Означает не жадный матч .. он остановится, как только он встретится '[' в противном случае он будет соответствовать всем до конца .. здесь вы можете не заметить разницу из-за обратного слежения .. вы можете поэкспериментировать, добавив ' blablabla' в конце вашей строки .. С удовольствием :) –

+0

Вы имеете в виду вот это? [Ссылка] (https://regex101.com/r/yM1dM7/3). Может быть, я неправильно понял, но ничего не меняет. Простите за беспокойство! –

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