【发布时间】:2011-02-01 00:10:36
【问题描述】:
我正在尝试使用 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 中完成时,我没有成功。
有什么想法吗?
【问题讨论】:
-
这里为什么要使用正则表达式?你使用的语言没有HTML解析库或者URL解析库吗?
-
嗯,我正在尝试使用正则表达式变得更好,所以我想看看它是否可能。其他原因是我不确定该语言(RealStudio)是否有一个可以处理的解析库。这是对我过去所做工作的更新,我根据其他因素和找到的模式做了一堆奇怪的查找/替换,当时 RegEx 是我最好的选择。
-
是的,当然有可能。一切皆有可能,但并非一切都是权宜之计。
-
要同时显示可能但又不符合权宜之计的内容,请阅读this testament against (mortals’:) using regexes on HTML。如果你很好地理解了这个例子,那么像parsing email addresses per RFC 5322 这样的简单任务肯定会轻而易举。 提示: 模式匹配的内容比大多数人一天能学会的要多得多。
标签: regex lookbehind