让我们直接举一个例子,因为它不容易解释:
<li id="l_f6a1ok3n4d4p" class="online"> <div class="link"> <a href="javascript:show('f6a1ok3n4d4p','random%20strings%204',%20'site2.com');%20" onclick="visited('f6a1ok3n4d4p');" style="float:left;">random strings - 4</a> <a style="float:left; display:block; padding-top:3px;" href="http://www.webtrackerplus.com/?page=flowplayerregister&a_aid=&a_bid=&chan=flow"><img border="0" src="/resources/img/fdf.gif"></a> <!-- a class="none" href="#">random strings - 4 site2.com - # - </a --> </div> <div class="params"> <span>Submited: </span>7 June 2015 | <span>Host: </span>site2.com </div> <div class="report"> <a title="" href="javascript:report(3191274,%203,%202164691,%201)" class="alert"></a> <a title="" href="javascript:report(3191274,%203,%202164691,%200)" class="work"></a> <b>100% said work</b> </div> <div class="clear"></div> </li> <li id="l_zsgn82c4b96d" class="online"> <div class="link"> <a href="javascript:show('zsgn82c4b96d','random%20strings%204',%20'site1.com');%20" onclick="visited('zsgn82c4b96d');" style
在上面的内容中我想从中提取 的javascript:显示(&#39; f6a1ok3n4d4p&#39;,&#39;随机%20strings%204&#39;,%20&#39; site2.com&#39)
字符串&#34; f6a1ok3n4d4p&#34;和&#34; site2.com&#34;然后把它作为
同样的 的javascript:显示(&#39; zsgn82c4b96d&#39;,&#39;随机%20strings%204&#39;,%20&#39; site1.com&#39;) 成为
我需要用红宝石正则表达式来完成
答案 0 :(得分:1)
这可以让您了解如何做到这一点。 https://regex101.com/r/wD4oT8/2
javascript:show\(\'(.*?)'.*?\'([^\']*)\'\)
会将第一个参数捕获为$ 1,将'
中的最后一个参数捕获为$ 2,这样您就可以替换为$2/$1
来获得所需的内容。
它是正则表达式的一部分,当然,您可以根据需要调整正则表达式,例如,包括"
的使用(javascript:show\((?:\'|\")(.*?)(?:\'|\").*?\'([^\'\"]*)(?:\'|\")\)
或允许只有3个参数。
/yourregex/.match(yourstring)
将提取您需要的信息。