Regex 正则表达式:在模式中匹配模式-我想我需要使用积极的Lookbehinds?

Regex 正则表达式:在模式中匹配模式-我想我需要使用积极的Lookbehinds?,regex,lookbehind,Regex,Lookbehind,我试图用正则表达式在一个模式中找到一个模式。具体来说,我想做的是将一个URL捕获到一个引用中,并在该引用中搜索最后一个=签名之后的所有内容,同时捕获该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=“(https

我试图用正则表达式在一个模式中找到一个模式。具体来说,我想做的是将一个URL捕获到一个引用中,并在该引用中搜索最后一个=签名之后的所有内容,同时捕获该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=“(https?[^”]*)”

从那里,我可以解析我正在寻找的
EM\u CMC21892\u LC\u内容的实际字符串(当查看捕获的组时):
=[^”=]*$

但是,当我试图将两者结合在一个正则表达式中实现时,我没有成功


有什么想法吗?

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


也就是说,尝试一下
href=“http[^”]+=([^“]+?)”

我同意Mark Byer关于使用现有html/url解析函数而不是regex的评论(尽管您没有指定使用哪种语言,因此我们无法在这方面提供真正的帮助…)

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

/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
        )

)

为什么要在这里使用正则表达式?您正在使用的语言不是有HTML解析库或URL解析库吗?嗯,我正在尝试更好地使用正则表达式,所以我想看看这是否可行。另一个原因是我不确定该语言(RealStudio)是否有一个可以处理的解析库。这是对我过去所做工作的更新,我根据其他因素和发现的模式进行了一系列奇怪的查找/替换,当时正则表达式是我最好的选择。是的,当然是可能的。所有的事情都是可能的,但并非所有的事情都是权宜之计。要展示什么是同时可能的,但不是权宜之计,请阅读。如果你能很好地理解这个例子,那么这些简单的任务肯定是轻而易举的。提示:模式匹配比大多数人一天能学到的要多得多。不,不要自找麻烦:要求认真的教育。☺
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
        )

)