0

我正在努力在 dot net 中编写正则表达式 exp,它应该捕获字符串中以 # char 后跟 [a-zA-Z0-9_]+ 开头的所有项目。问题是我想避免捕获后跟括号“(”的子字符串所以从这个示例字符串“#REGNR()+#ORDER”我需要在匹配中获得以下输出:“#ORDER”我正在尝试使用此正则表达式实现此目的:"(#([a-zA-Z0-9_]+(?!()))" 问题是我得到了两个匹配项:"#REGN" 和 "#ORDER",这是绝对不是我想要的。

有什么建议么?

非常感谢,

彼得

4

2 回答 2

0

我认为,您需要找到单词的边界。

为此,只需将\b<- 单词的边框放在您想要的位置。

在你的练习中:#\b([a-zA-Z0-9_]+)\b(?!\(\))

它将满足您的所有需求(检查此处regexs

匹配整个单词而不是末尾\b<WHOLE WORD>\b的特殊字符。()

于 2012-08-01T07:06:54.150 回答
0

也许这个?

(#([a-zA-Z0-9_]+))(?!\()

这样,您就可以在分组中包含散列。这将仅匹配以下中的“#ORDER”:

#REGNR() + #ORDER + #B() + BLAH
于 2012-08-01T07:08:33.000 回答