我对正则表达式不太满意,所以我需要一个正则表达式的帮助,它将从单词doc中提取所有C函数声明。我已经在内存中加载了doc这个词,并且阅读了文本,所以这不是问题。此外,所有函数都以INTERNAL_开头,显然以...结尾; e.g。
INTERNAL_DisplayMessage(param a,int b);
所以基本上,我需要正则表达式,它将从INTERNAL_提取整个函数声明;。所有API的返回值都是相同的,因此无关紧要。
答案 0 :(得分:2)
像(INTERNAL_.+?\);)
这样简单的东西应该有效。我强烈推荐RegExr来完成这些类型的任务。
答案 1 :(得分:2)
您需要使用此正则表达式:
(INTERNAL_[^ ]+?\s?\(.*?\);)
外括号使函数的所有文本都被捕获到组内。
使用反斜杠\(
\)
对函数声明括号进行转义,以便将它们视为文字,而不是分组。
[^ ]\s?
表示任何不是空格,一次或多次的字符,在左括号之前的可选空格中
.*?
表示任意字符,*
任意次数(包括o),尽可能少
由于函数声明中包含\ n,因此需要使用RegexOptions.Singleline
选项创建正则表达式作为Regex构造函数的第二个参数:
指定单行模式。更改点(。)的含义,使其匹配每个字符(而不是除\ n之外的每个字符)。
请参阅文档:RegexOptions Enumeration
这是一个非常好的地方:这是一个:
它可以让您更改语言并设置选项。对于SinleLine选项,检查'dot(。)是否与该页面上的每个字符匹配,而不是与换行符(单行)之外的每个字符匹配。