2015-05-21 41 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)。也许我误解了,但无论如何也没有改变。对不起打扰! –

相关问题