我正在努力在dot net中编写regex exp,它应该捕获字符串中所有以#chac开头,后跟[a-zA-Z0-9 _] +的项目。 问题是我想避免捕获子串,后面跟着括号“(” 所以从这个示例字符串“#REGNR()+ #ORDER”我需要在匹配中获得以下输出:“#ORDER” 我试图用这个正则表达式实现这个目标:“(#([a-zA-Z0-9 _] +(?!()))” 问题是我得到了两个匹配:“#REGN”和“#ORDER”,它们定义的不是我想要的。
有什么建议吗?
非常感谢,
彼得
答案 0 :(得分:0)
我想,你需要找到这个词的边界。
为此,只需将\b
< - 单词的边框放在您想要的位置。
在练习中:#\b([a-zA-Z0-9_]+)\b(?!\(\))
它将满足您的所有需求(请点击此处regexs)
将\b<WHOLE WORD>\b
中的整个字词与最后的特殊字符()
匹配。
答案 1 :(得分:0)
也许这个?
(#([a-zA-Z0-9_]+))(?!\()
这样你就可以在你的分组中加入哈希。这只会匹配以下“#ORDER”:
#REGNR() + #ORDER + #B() + BLAH