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