regex - 需要正则表达式来拒绝重复
问题描述
我的测试字符串是: 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
解决方案
该模式\w+(?=!)
匹配 1+ 个单词字符,断言右侧的内容是!
如果你想断言整个模式只出现一次,你可以使用一个捕获组\w+
并将该组包装在另一个组中添加!也是。
然后,您可以使用否定前瞻断言整个组确实出现一次,并从第二组中获取单词字符。
您的比赛在第二个捕获组中。
((\w+)!)(?!.*\1)
||
|Group 2
|
Group 1
解释
(
捕获组 1(\w+)
捕获第 2 组,匹配 1+ 个单词字符!
从字面上匹配
)
关闭组 1(?!
负前瞻,断言右边的不是.*\1
匹配任何字符 0+ 次,后跟对第 1 组的反向引用
)
关闭负前瞻
推荐阅读
- javascript - 检查离子上的按钮状态
- javascript - React - 将道具传递给 App.js
- bitbucket-api - 从 bitbucket 查询结果中排除已删除的评论
- javascript - 提交表单模式后显示成功消息
- javascript - 如何对 JSON 的相似子项进行分组
- azure - 在 Linux 中创建 Azure Service Fabric 本地集群
- sql - 如果 IN 子句不存在行,则返回虚拟值
- ruby - 如何将 CSON 解析为 Ruby 对象?
- ios - Telerik 设置高度单元格 xamarin iOS
- javascript - 从另一个页面获取信息到 javascript