我正在尝试使用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"
使用此RegEx:href="(https?[^"]*)"
从那里我可以解析实际的字符串(当查看捕获的组时)我正在寻找EM_CMC21892_LC_stuff
这个:=[^"=]*$
虽然当我尝试将两者结合起来在一个RegEx中完成它时,我没有成功。
有什么想法吗?
答案 0 :(得分:0)
他是对的,使用正则表达式来解析HTML只是在寻找麻烦。
那就是说,试试href="http[^"]+=([^"]+?)"
。
答案 1 :(得分:0)
我同意Mark Byer关于使用现有的html / url解析函数而不是正则表达式的评论(尽管你没有指定使用哪种语言,所以我们无法真正帮助...)
但是,如果你坚持用正则表达式方式,这是一个模式:
/href="([^"]*=([^"]*))"/
编辑添加:这里是结果会是什么样的,不确定你是否仍然想要捕获完整的url或只是最后一个param值,但是这个模式捕获了两者:
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
)
)