3

我想使用正则表达式来查找两个标签之间的内容,如下所示:

<br />@ This is the content.</li>

到目前为止,我一直在使用:

<br />@(.*?)</li>

内容有时包含<li>标签,这不是我想要寻找的。所以现在我想修改我的搜索,比如match <br />@(.*?)</li>不包含<li> tag.

然后我尝试: <br />@([^<li>].*?)</li>,但这仍然包含<li>在它的搜索中。

你能给我一点帮助吗?谢谢你。(注意,我使用 TextWrangler)

4

2 回答 2

6

描述

该表达式将:

  • 查找以下一个开头<br />和结尾的子字符串</li>
  • 验证子字符串不包含<li>
  • 捕获上面定义的开始和结束标记之间的文本

<br\s*\/>(@(?:(?!<li>).)*?)<\/li>

在此处输入图像描述

例子

示例文本

现场示例:http ://www.rubular.com/r/CIledJX54O

注意第一行的条件不好

<br />@ Don't <li>find me.</li>
<br />@ This is the content.</li>
<br />@ more desired content.</li>

捕获组

[0] => Array
    (
        [0] => <br />@ This is the content.</li>
        [1] => <br />@ more desired content.</li>
    )

[1] => Array
    (
        [0] => @ This is the content.
        [1] => @ more desired content.
    )
于 2013-07-16T04:55:42.880 回答
0

为什么这个正则表达式不起作用:

#<a[^>]+href\s*=\s*(["\'])(.*?)\1[^>]*>((?:(?!</a).)*?)Domain#msi

我正在尝试查找在其链接文本中包含“域”字符串的所有链接。它将匹配所需的以及包含“ </a”的代码部分。

例如,它将匹配:

<a href="/new-domains">New Domain

但是也

<a href="/domains/url-email-forwarding">URL & Email Forwarding</a></ul></div><!--/.navigation--></div></div></li><li><a href="/hosting">Hosting</a><div><div><div class="navigation"><h1>Premium Domain

当我将“域”替换为“ </a”时,它将正确匹配所有链接。但为什么它不适用于“域”?!

全谜。。

于 2014-08-22T18:20:22.910 回答