【问题标题】:Using EVAL and REGEX in iMacros to EXTRACT characters在 iMacros 中使用 EVAL 和 REGEX 提取字符
【发布时间】:2014-03-23 14:56:22
【问题描述】:

假设我有:

SET !EXTRACT "this is a Make of the car"

如果我使用:

SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"Make\"); ")

然后我得到一个提示“Make”。现在,假设我对“a Make of the”这个短语感兴趣。根据在线测试员 (http://www.regexr.com/) 的说法,正则表达式为:

(?<=this is)(.*)(?=car)

但是,下面的代码不起作用:

SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"(?<=this is)(.*)(?=car)\"); ")

我收到以下错误:

SyntaxError: 量词无效,第 16 行(错误代码:-1001)

为什么?

编辑:显然,使用其他在线测试器 (http://www.pagecolumn.com/tool/regtest.htm),正则表达式应该是:

(?![this is])(.*)(?=car)

但是,通过使用这个:

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"(?![this is])(.*)(?=car)\"); ")

我明白了

一个制造,一个制造

有什么想法吗?

【问题讨论】:

  • 我不擅长正则表达式,但这是一个有趣的问题。我在 stackoverflow 聊天中询问正则表达式解决方案。频道 JavaScript。
  • iMacros 为此目的内置了“搜索”功能:wiki.imacros.net/SEARCH

标签: javascript regex eval imacros


【解决方案1】:

我最近遇到了同样的问题,并在试图弄清楚发生了什么时遇到了这个问题。我花了一些时间弄清楚发生了什么。如果我没有使用正确的术语,请原谅我。

让我用你的最后一个例子来解释发生了什么。

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"(?![this is])(.*)(?=car)\"); ")

你得到输出的原因:

a Make of the ,a Make of the

是因为正则表达式中的括号将匹配数据存储在“s”变量中的单独数组中,这是逗号后面的内容。通过指定哪个数组包含你想要“s”输出的数据,就可以得到你要找的输出。

例如,如果你想:

a Make of the

作为所需的输出,使用

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"(?![this is])(.*)(?=car)\"); s[0];")

观察这一行末尾的“s[0]”。 [0] 数组转换为“正在匹配的所有内容”,其中 [1] 是“在(第一个)括号中匹配的所有内容”。不要问我为什么会这样。我遇到了以下论坛帖子,它为我指明了正确的方向。

http://forum.imacros.net/viewtopic.php?f=7&t=18938

由于我在该论坛帖子之前遇到了这个问题,所以我想我会在这里分享我的发现,以防其他人遇到同样的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多