正则表达式练习 - 匹配子字符串后面没有特殊字符。

时间:2012-08-01 06:56:20

标签: .net regex

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

有什么建议吗?

非常感谢,

彼得

2 个答案:

答案 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