2013-08-28 97 views
0

我尝试写一个.NET正则表达式在我的代码语言识别“参数”:.NET正则表达式参数识别

例如在我的代码语言,我有这样的单行线,但一般不要”我不觉得这是一个代码的语言,这是一个字符串行...

SET A = MyFUNC (@param1,@param2) #this is a in-line comment and this 2 parameter not wil be recognized @param3 @param4 

我需要匹配@param1@param2这是我的语言的参数。

我需要使用.NET正则表达式执行搜索。 这可能吗?

+0

你可以发布你的尝试吗? – Jerry

+0

尽管在技术上没有解析器是可行的,但它很快就会变得非常复杂......如果你有'MYFUNC(“@ CONSTANT”,@ param2)',或者更糟糕'MYFUNC(“@ CONSTANT \”“,@ param2 )'或者甚至更糟糕你想支持多行注释......通常你应该“投资”你生命中的一年,并研究antlr :-) – xanatos

+0

当然,我们已经“投资”了......一年以上的解析器.. :) ...这工作好..这个搜索,正则表达式只需要颜色pourpose。在你的例子解析返回一个或多个错误..在这里我只需要找到与@开头的单词匹配。 ..我尝试这个解决方案:“@ \\ w +”,似乎工作...非常感谢,Marco Bosco – user2724856

回答

0

正则表达式是这样的:

var rx = new Regex(@"(?<!#.*)@[A-Za-z0-9_]+"); 
var res = rx.Matches(str).OfType<Match>().ToArray(); 

它会返回一个匹配前的#每个参数,但我已经告诉你的评论,它是如此多的原语,穴居人与俱乐部是现代相比下。

它寻找@ + letters/numbers/_之前没有#(?<!#.*))。

+0

非常感谢,Marco – user2724856