【问题标题】:need regex to reject duplicates [duplicate]需要正则表达式来拒绝重复[重复]
【发布时间】:2019-07-15 12:29:16
【问题描述】:

我的测试字符串是: Named_Hires!$W$16:$W$87 + Calc_Named_HC!AD$32:AD$103 +A + Named_Hires!$W$16:$W$87

我的正则表达式是 \w+(?=!)

它工作正常并提取 Named_Hire、Calc_Named_H 和 Named_Hires

我想消除重复项,以免提取第二个 Named_Hires TIA

【问题讨论】:

  • 从提取的值中创建一个集合?

标签: regex google-apps-script


【解决方案1】:

模式 \w+(?=!) 匹配 1+ 个单词字符,断言右侧是 !

如果您想断言整个模式只出现一次,您可以为\w+ 使用捕获组并将该组包装在另一个组中添加!也是。

然后您可以使用否定前瞻断言整个组确实出现一次并从第二组中获取单词字符。

你的对手在第二个捕获组中。

((\w+)!)(?!.*\1)
||
|Group 2
|
Group 1

说明

  • (抓包1
    • (\w+)捕获组2,匹配1+字字符
    • ! 字面匹配
  • )关闭第一组
  • (?!负前瞻,断言右边的不是
    • .*\1 匹配任何字符 0+ 次,后跟第 1 组的反向引用
  • ) 关闭负前瞻

Regex demo

【讨论】:

  • (\w+)(?=!)(?!.*\1) 可能会过滤掉比预期更多的匹配项。
  • @WiktorStribiżew 你说得对,我已将! 添加到比赛中并使用了2组。
  • @StevenGreenbaum 如果我的回答帮助您解决了问题,请查看someone answers
猜你喜欢
  • 2020-01-23
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2014-02-16
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多