正则表达式,用于在标签之间提取文本,但不提取标签

Nic*_*sse 3 php regex preg-match-all preg-match

我想写一个正则表达式,它提取<title>字符串中两个标签之间的内容,但不提取标签.IE我有以下内容

<title>My work</title>
<p>This is my work.</p> <p>Learning regex.</p>
Run Code Online (Sandbox Code Playgroud)

正则表达式

(<title>)(.*?)(<\/title>)
Run Code Online (Sandbox Code Playgroud)

提取物,<title>My work</title>但我只想提取My work.我怎样才能做到这一点?这是http://regex101.com/r/mD8fB0示例的链接

小智 9

您可以使用以下正则表达式:

>([^<]*)<
Run Code Online (Sandbox Code Playgroud)

或者,> [^ <]*<

然后消除不需要的字符,例如'<'&'>'

  • 你能解释一下[[^ &lt;]`的意思吗? (2认同)
  • 这不适用于 `&lt;charlie&gt;&lt;bob&gt;Alice&lt;/bob&gt;&lt;/charlie&gt;` - 即嵌套标签内的文本。有什么想法吗? (2认同)

Amm*_*mar 5

最好的方法是使用断言,对于你的情况,正则表达式将是:

(?<=\<title\>).*?(?=\<\/title\>)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看此处


and*_*ter 5

我用它作为正则表达式的替换函数:(<.+?>)