3

我正在尝试使用 RegEx 在模式中查找模式。具体来说,我想要做的是将 URL 捕获到引用中,并在其中搜索最后一个 = 符号之后的所有内容并捕获它。

所以给定这个字符串

<a href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff" style="color: #365EBF:">stuff</a>

我最初会发现

href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff"

使用这个正则表达式:href="(https?[^"]*)"

从那里我可以解析我正在寻找的实际字符串(在查看捕获的组时)EM_CMC21892_LC_stuff=[^"=]*$

但是,当我尝试将两者结合起来在一个 RegEx 中完成时,我没有成功。

有什么想法吗?

4

2 回答 2

0

他是对的,使用正则表达式解析 HTML 只是自找麻烦。

就是说,试试href="http[^"]+=([^"]+?)"

于 2011-02-01T00:26:13.890 回答
0

我同意 Mark Byer 关于使用现有的 html/url 解析函数而不是正则表达式的评论(尽管您没有指定您使用的是哪种语言,所以我们无法真正帮助...)

但是,如果您坚持使用正则表达式的方式,这里有一个模式:

/href="([^"]*=([^"]*))"/

编辑添加:这是结果的样子,不确定您是否仍要捕获完整的 url 或仅捕获最后一个参数值,但此模式同时捕获:

Array
(
    [0] => Array
        (
            [0] => href="http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff"
        )

    [1] => Array
        (
            [0] => http://my.domain.com/?s_cid=EM&s_ev9=CMC21892&s_ev10=EM_CMC21892_LC_stuff
        )

    [2] => Array
        (
            [0] => EM_CMC21892_LC_stuff
        )

)
于 2011-02-01T00:26:43.470 回答