我一直在做一些窥探,并发现我认为是我的问题的正确解决方案,非贪婪,但它没有按预期工作。
我正在尝试隔离具有相同内容的下拉菜单(对于LoadRunner脚本)。 HTML代码如下所示;
<input type="hidden" name="advanceDiscount" value="0" /><table border="0" cellspacing="5"><tr><td align="left">Departure City :</td> <td><select name="depart" >
<option selected="selected" value="Denver">Denver</option>
<option value="Frankfurt">Frankfurt</option>
<option value="London">London</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Paris">Paris</option>
<option value="Portland">Portland</option>
<option value="San Francisco">San Francisco</option>
<option value="Seattle">Seattle</option>
<option value="Sydney">Sydney</option>
<option value="Zurich">Zurich</option>
</select></td> <td align="left">Departure Date :</td> <td><input type="text" name="departDate" value="05/07/2014" size="10" maxlength="10" />
<!-- Departure Date Applet -->
<APPLET CODEBASE="/WebTours/classes/" CODE="FormDateUpdate.class" MAYSCRIPT Width=26 Height=28 BORDER=0>
<PARAM NAME=CalenderTitle VALUE="Select Departure Date">
<PARAM NAME=HtmlFormIndex VALUE=0>
<PARAM NAME=HtmlEditIndex VALUE=2>
<PARAM NAME=AutoClose VALUE=1>
<PARAM NAME=Label VALUE="...">
</APPLET>
</td></tr> <tr><td align="left">Arrival City :</td> <td><select name="arrive" >
<option selected="selected" value="Denver">Denver</option>
<option value="Frankfurt">Frankfurt</option>
<option value="London">London</option>
<option value="Los Angeles">Los Angeles</option>
<option value="Paris">Paris</option>
<option value="Portland">Portland</option>
<option value="San Francisco">San Francisco</option>
<option value="Seattle">Seattle</option>
<option value="Sydney">Sydney</option>
<option value="Zurich">Zurich</option>
</select></td> <td align="left">Return Date :</td> <td><input type="text" name="returnDate" value="05/08/2014" size="10" maxlength="10" />
<!-- Return Date Applet -->
我希望捕获的内容是<select name="depart" >
到</select></td>
我尝试的正则表达式是;
\Q<td><select name=\E"(.*\r\n)*(\Q</select></td>\E?)
但遗憾的是,即使我已经指定了一个非贪婪的&#34;?&#34;它仍会捕获到最后一个</select></td>
。在第三个参数中:(\Q</select></td>\E?)
有人可以提醒我我的错误,并可能让我找到解决方案吗?
作为一个扩展,什么是说&#34;只有第二次出现&#34;?所以从第二个<select name=".*>
开始。
干杯!!
我的问题的答案是使用<td><select name="(.*\r\n)*?(</select></td>)
以防其他人想知道。
谢谢MikeH-R!
答案 0 :(得分:0)
由于您说评论解决了您的问题,我将重新发布作为答案,但我需要先重申Joeytje50的评论don't parse html with regex's。
现在我们已经完成了这项工作,并且您承诺仅将其用于教育目的,而且从未投入生产;这是解决方案,你有吗?在错误的地方,你想把贪婪的*变成非贪婪的:
\Q<td><select name=\E"(.*\r\n)*?(\Q</select></td>\E)