正则表达式以提取所有函数声明

时间:2012-05-08 22:18:32

标签: c# regex

我对正则表达式不太满意,所以我需要一个正则表达式的帮助,它将从单词doc中提取所有C函数声明。我已经在内存中加载了doc这个词,并且阅读了文本,所以这不是问题。此外,所有函数都以INTERNAL_开头,显然以...结尾; e.g。

INTERNAL_DisplayMessage(param a,int b);

所以基本上,我需要正则表达式,它将从INTERNAL_提取整个函数声明;。所有API的返回值都是相同的,因此无关紧要。

2 个答案:

答案 0 :(得分:2)

(INTERNAL_.+?\);)这样简单的东西应该有效。我强烈推荐RegExr来完成这些类型的任务。

答案 1 :(得分:2)

您需要使用此正则表达式:

  (INTERNAL_[^ ]+?\s?\(.*?\);)

外括号使函数的所有文本都被捕获到组内。

使用反斜杠\( \)对函数声明括号进行转义,以便将它们视为文字,而不是分组。

[^ ]\s?表示任何不是空格,一次或多次的字符,在左括号之前的可选空格中

.*?表示任意字符,*任意次数(包括o),尽可能少

由于函数声明中包含\ n,因此需要使用RegexOptions.Singleline选项创建正则表达式作为Regex构造函数的第二个参数:

  

指定单行模式。更改点(。)的含义,使其匹配每个字符(而不是除\ n之外的每个字符)。

请参阅文档:RegexOptions Enumeration

这是一个非常好的地方:这是一个:

www.regexplanet.com

它可以让您更改语言并设置选项。对于SinleLine选项,检查'dot(。)是否与该页面上的每个字符匹配,而不是与换行符(单行)之外的每个字符匹配。