【问题标题】:regex to extract string between delimiters正则表达式提取分隔符之间的字符串
【发布时间】:2021-08-03 10:50:59
【问题描述】:

我正在尝试使用定界符“_”(下划线)断开字符串,并使用正则表达式从中提取特定值。但是,由于每个子字符串中都有下划线字符,所以我遇到了困难。

你能告诉我怎么做吗--> 字符串:GOOGLE_CPC_(CAMPAIGN_NAME)_(AD_GROUP)_SEARCH

我需要从列表中分别提取CAMPAIGN_NAMEAD_GROUP

谷歌应用脚​​本我需要这个

【问题讨论】:

    标签: regex google-apps-script


    【解决方案1】:

    不清楚为什么需要用下划线分割它。如果您只想捕获括号中的值,您可以使用正则表达式

    import re
    mystring = "GOOGLE_CPC_(CAMPAIGN_NAME)_(AD_GROUP)_SEARCH"
    matches = re.findall(r"\((.+?)\)", mystring)
    print(matches)
    

    输出

    ['CAMPAIGN_NAME', 'AD_GROUP']
    

    【讨论】:

      【解决方案2】:

      以下正则表达式可以满足您的需要。

      [(](.*?)[)]
      

      它匹配括号,然后将括号内的所有字符分组。你用 ?过滤非贪婪,所以你得到2组,这是你需要的组。

      【讨论】:

      • 这样是否有可能只提取第二个或第三个匹配项?
      • 是的。与此处的其他答案一样,您可以使用 findall 并获取所有结果的列表。您可以使用 result[1] 来获得第二个结果,等等。
      【解决方案3】:

      您正在寻找 Google Apps 脚本中的解决方案,这个 sn-p 可以为您完成这项工作:

      const str = 'GOOGLE_CPC_(CAMPAIGN_NAME)_(AD_GROUP)_SEARCH';
      const result = str.match(/(?<=\()([^\(\)]+)(?=\))/g);
      console.log(result);

      它基本上匹配括号内的所有值并将它们放入result 数组中。因此,您的广告系列名称为 result[0],您的广告组名称为 result[1]

      如果这有帮助,请告诉我。

      【讨论】:

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