Javascript 使用iMacros中的EVAL和REGEX提取字符

Javascript 使用iMacros中的EVAL和REGEX提取字符,javascript,regex,eval,imacros,Javascript,Regex,Eval,Imacros,假设我有: SET !EXTRACT "this is a Make of the car" 如果我使用: SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"Make\"); ") 然后我得到一个提示“Make”。现在,让我们假设我对短语“a Make of the”感兴趣。根据online tester(),正则表达式应该是: (?<=this is)(.*)(?=car) 但是,通过使用此选项: SET !VAR2 EVAL("v

假设我有:

SET !EXTRACT "this is a Make of the car"
如果我使用:

SET !VAR1 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"Make\"); ")
然后我得到一个提示“Make”。现在,让我们假设我对短语“a Make of the”感兴趣。根据online tester(),正则表达式应该是:

(?<=this is)(.*)(?=car)
但是,通过使用此选项:

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

一个品牌,一个品牌


有什么想法吗?

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

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

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]是“在(第一个)括号中匹配的所有内容”。别问我为什么会这样。我遇到了以下论坛帖子,它为我指明了正确的方向


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

我不擅长正则表达式,但这是一个有趣的问题。我在stackoverflow聊天中询问正则表达式解决方案。Channel JavaScript.iMacros具有用于此目的的内置功能“搜索”:
a Make of the
SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(\"(?![this is])(.*)(?=car)\"); s[0];")