我正在努力在 dot net 中编写正则表达式 exp,它应该捕获字符串中以 # char 后跟 [a-zA-Z0-9_]+ 开头的所有项目。问题是我想避免捕获后跟括号“(”的子字符串所以从这个示例字符串“#REGNR()+#ORDER”我需要在匹配中获得以下输出:“#ORDER”我正在尝试使用此正则表达式实现此目的:"(#([a-zA-Z0-9_]+(?!()))" 问题是我得到了两个匹配项:"#REGN" 和 "#ORDER",这是绝对不是我想要的。
有什么建议么?
非常感谢,
彼得
我认为,您需要找到单词的边界。
为此,只需将\b
<- 单词的边框放在您想要的位置。
在你的练习中:#\b([a-zA-Z0-9_]+)\b(?!\(\))
它将满足您的所有需求(检查此处regexs)
匹配整个单词而不是末尾\b<WHOLE WORD>\b
的特殊字符。()
也许这个?
(#([a-zA-Z0-9_]+))(?!\()
这样,您就可以在分组中包含散列。这将仅匹配以下中的“#ORDER”:
#REGNR() + #ORDER + #B() + BLAH