匹配其启动并在iMacros的字符串

问题描述:

结尾的字符串模式假设这是我的文字匹配其启动并在iMacros的字符串

SET abc "<select name="ctl00$ContentPlaceHolder1$ddlyear" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlyear\',\'\')', 0)" id="ctl00_ContentPlaceHolder1_ddlyear" class="page-heading" style="background-color: rgb(255, 244, 244); width: 95px; outline: 1px solid blue;"> <option selected="selected" value="Select Year">Select Year</option> <option value="2000">2000</option> 
<option value="2001">2001</option> 
<option value="2002">2002</option> 
<option value="2003">2003</option> 
<option value="2004">2004</option> 
<option value="2005">2005</option>  
<option value="2006">2006</option>  
<option value="2007">2007</option>  
<option value="2008">2008</option>  
<option value="2009">2009</option>  
<option value="2010">2010</option>  
<option value="2011">2011</option>  
<option value="2012">2012</option>  
<option value="2013">2013</option>  
<option value="2014">2014</option>  
<option value="2015">2015</option>  
<option value="2016">2016</option>  
<option value="2017">2017</option>  
</select>" 

而我只是想提取从上面的文字里,所以我匹配盯着字符串作为<option value=和结束字符串作为</option>并获得这两种模式之间的串

SET text EVAL("var s=\"{{abc}}\"; s.match(\"(?![<option value=])(.*)(?=</option>)\");") 

但它再次给整个文本 如果我去做

SET text EVAL("var s=\"{{abc}}\"; s.match(\"(?![<option value=])(.*)(?=</option>)\");s[0]") 

这给了我"<" 任何建议我哪里出错了? 谢谢

我想你可以尝试这样一个简单的方法:

TAG XPATH="id('ctl00_ContentPlaceHolder1_ddlyear')" EXTRACT=TXTALL 
SET numbers EVAL("'{{!EXTRACT}}'.replace('Select Year[OPTION]', '');") 
PROMPT {{numbers}} 
+0

这给出的输出为“2000 [选项] 2001 [选项] 2002 [选项] 2003 [选项] 2004 [选项] 2005 [选项] 2006 [选项] 2007 [选项] 2008 [选项] 2009〔O PTION] 2010 [OPTION] 2011 [OPTION] 2012 [OPTION] 2013 [OPTION] 2014 [OPTION] 2015 [OPTION] 2016 [OPTION] 2017“ – deepesh

+0

感谢您的突破:) – deepesh

我无法测试一个imacros版本,但你的普通正则表达式是错误地使用方括号和负向视图。

这里是一个正则表达式匹配您正在寻找的东西(之前</option>所有的数字):

([0-9] *)(= < /选项>?)

演示在这里: https://regex101.com/r/jA3Al9/2

编辑:正如我所说,我不能测试,但我猜你正在寻找:

SET text EVAL("var s=\"{{abc}}\"; s.match(\"([0-9]*)(?=</option>)\");s[0]")

+0

不,它没” t出来了。它给了我“ - ”作为输出 – deepesh

从@舒加的答案添加几行得到的答案

TAG XPATH="id('ctl00_ContentPlaceHolder1_ddlyear')" EXTRACT=TXTALL 
SET numbers EVAL("'{{!EXTRACT}}'.replace('Select Year[OPTION]', '');") 
SET numb1 EVAL("'{{numbers}}'.replace(/[OPTION]/g,'');") 
SET numb2 EVAL("'{{numb1}}'.split('[]')") 
PROMPT {{numb2}} 
+1

一行就够了:'SET numbers EVAL (''{{!EXTRACT}}'。replace('Select Year [OPTION]','').split('[OPTION]');“)' – Shugar