【问题标题】:Extract value by regular expression by using imacros eval使用 imacros eval 通过正则表达式提取值
【发布时间】:2017-07-03 06:59:27
【问题描述】:

使用此代码TAG POS=2 TYPE=a ATTR=class:stop-propagation&&TXT:* EXTRACT=HTM后得到以下结果

输出

<a class="stop-propagation" href="javascript:void(0);" data-link="/propertyDetails/poiOnMap.html?lat=19.2412011&amp;longt=73.1290596&amp;projectOrProp=Project&amp;city=Thane&amp;includeJs=y&amp;type=poiMap2017&amp;address=Thane, Maharashtra" id="map_link_27696295" onclick="stopPage=true; showPhotoMap('/propertyDetails/poiOnMap.html?lat=19.2412011&amp;longt=73.1290596&amp;projectOrProp=Project&amp;city=Thane&amp;includeJs=y&amp;type=poiMap2017&amp;address=Thane, Maharashtra');" style="outline: 1px solid blue;"><span class="icoMap"></span>Map</a>

我正在尝试从以下代码中提取名为 longt 的变量的值

SET longt EVAL("'{{!EXTRACT}}'.match(/&(longt=.+?)&/)[1];")
PROMPT "{{longt}}"

但这并没有给我任何输出。 关于可以进行哪些修改以获得输出的任何建议对我都有帮助。 谢谢

【问题讨论】:

  • 使用longt=(.&amp;?)&amp;longt=([^&amp;]+)
  • 对于第一个 "longt=(.&?)&" 它不起作用,对于第二个它给出错误 "MacroSyntaxError: can not parse macro line 5: longt=([^&]+ )(错误代码:-910)"

标签: javascript regex match eval imacros


【解决方案1】:

你可以试试这个正则表达式:

longt=(\d+(?:\.\d+)?)

Regex Demo

你可以在 imacro 中试试这个:

SET longt EVAL("var regex = /longt=(\\d+(?:\\.\\d+)?)/g; var str = '{{!EXTRACT}}';str.match(regex);")
PROMPT {{longt}}

【讨论】:

  • 根据你的正则表达式更新了我的代码 " SET longt EVAL("'{{!EXTRACT}}'.match(/&(longt=(\d+(?:\.\d+)?) &/)[1];") " 但这给了我错误 ---> "未终止的括号,第 3 行(错误代码:-1001)"
  • 你还没有关闭 EVAL( 的括号。在末尾添加一个额外的 ')'
  • 再次更新为" SET longt EVAL("'{{!EXTRACT}}'.match(/&(longt=(\d+(?:\.\d+)?))&/) [1];") " 但仍然错误 ------> ".match(...) 为空,行:6(错误代码:-1001)
  • 我猜你需要转义反斜杠字符 '\' 。我已经用 imacro impolementation 更新了答案。请注意,您得到的结果不止一个经度。因此,结果被空格附加。你可以随意修改。
  • 首先我在你的代码上做了 [1] ......" SET longt EVAL("var regex = /longt=(\\d+(?:\ \.\\d+)?)/g; var str = '{{!EXTRACT}}';str.match(regex)[1];") " .... .... 非常感谢您的时间和精力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多