2015-05-21 89 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)。也許我誤解了,但無論如何也沒有改變。對不起打擾! –

相關問題