0

我不擅长正则表达式,所以我需要一个正则表达式的帮助,它可以从 word doc 中提取所有 C 函数声明。我已经在内存中加载了单词 doc 并阅读了文本,所以这不是问题。此外,所有函数都以 INTERNAL_ 开头,显然以 ); 结尾。例如

INTERNAL_DisplayMessage ( 参数 a, int b );

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

4

2 回答 2

2

(INTERNAL_.+?\);)应该工作一样简单的东西。对于这些类型的任务,我强烈推荐RegExr 。

于 2012-05-08T22:27:58.233 回答
2

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

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

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

函数声明括号用反斜杠转义\( \),因此它们被视为文字,而不是分组。

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

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

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

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

请参阅文档:RegexOptions 枚举

一个检查正则表达式的好地方是这个:

www.regexplanet.com

它使您可以更改语言并设置选项。对于 SinleLine 选项,请检查该页面上的“点 (.) 匹配每个字符而不是除换行符 (Singleline) 之外的每个字符”选项。

于 2012-05-08T23:06:58.757 回答