【问题标题】:How to match everything before constant string using RegExp in Google Apps Script?如何在 Google Apps 脚本中使用 RegExp 匹配常量字符串之前的所有内容?
【发布时间】:2021-05-08 00:18:32
【问题描述】:

我要疯了。

我需要做以下事情:

给定一个字符串"sometext<tag>",我需要从中提取"sometext"。现在我有两个解决方案可以在 Firefox 控制台中运行,但不能在 Google Apps 脚本中运行(可以使用 exec 或 match):

(A) string.match(/(^.*?)<[^<]*?>/)
(B) string.match(/^.*?(?=<[^<]*?>)/)

现在我阅读了很多关于类似事情的 stackoverflow 答案,其中一些人说不支持前瞻。美好的。这就是我想出捕获组一的原因。

在控制台中就像一个魅力,但在 GAS 中执行它并返回 null。什么鬼??

为什么会这样? GAS 也不支持捕获组吗?关于如何实现我的目标的任何想法?

感谢您的宝贵时间!

【问题讨论】:

  • 当然有很多解决方案,但我更好奇其中的原因。您是否尝试过转义要匹配的字符?或者用new RegExp()声明正则表达式?
  • 都没有帮助...
  • 能否提供复制but execute it in GAS and it returns null.的脚本?因为,当 console.log("sometext&lt;tag&gt;".match(/(^.*?)&lt;[^&lt;]*?&gt;/)[1])console.log("sometext&lt;tag&gt;".match(/^.*?(?=&lt;[^&lt;]*?&gt;)/)[0]) 使用您的示例值和正则表达式在 Google Apps 脚本的脚本编辑器中运行时,两个脚本都会返回 sometext 的值。
  • 感谢您的帮助!问题是:我发现了另一个更大的问题,这意味着我在过去 8 小时左右所做的一切基本上都是徒劳的,我必须重新开始(非常有趣),所以我不再关心了......我应该在大约 5 小时前上床睡觉......

标签: javascript regex google-apps-script


【解决方案1】:
"sometext<tag>".match(/([^\<]+)\</)[1]

【讨论】:

    【解决方案2】:

    string.slice(0,string.indexOf('&lt;'));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 2013-12-22
      • 2016-05-14
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多