正则表达式首次出现

时间:2014-05-06 11:55:10

标签: regex loadrunner regex-greedy

我一直在做一些窥探,并发现我认为是我的问题的正确解决方案,非贪婪,但它没有按预期工作。

我正在尝试隔离具有相同内容的下拉菜单(对于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!

1 个答案:

答案 0 :(得分:0)

由于您说评论解决了您的问题,我将重新发布作为答案,但我需要先重申Joeytje50的评论don't parse html with regex's

现在我们已经完成了这项工作,并且您承诺仅将其用于教育目的,而且从未投入生产;这是解决方案,你有吗?在错误的地方,你想把贪婪的*变成非贪婪的:

\Q<td><select name=\E"(.*\r\n)*?(\Q</select></td>\E)