我想知道如何匹配指定区域中的字符串:例如,我有一个C ++代码段:
/*
This is .... bla bla bla...int, float,...
@author: Tom
*/
int a;
float b;
那么我想在注释之外找出
int
,float
之类的关键字,该怎么做?我在想是否可以使用预搜索。但是一个简单的示例\b\w+(?<=er)\b
匹配'worker','super'等单词,如果我只想将这些结果的子字符串放在er
之前该怎么办。另一个示例,如果我只需要匹配行注释在c ++代码中,如果我使用//.*?\n
,则\n
也在结果中,但是我不需要它...更新:
我不知道我是否已经清楚地解释了我的问题,也不知道如何给我的问题加上标题... :(
最佳答案
您确实不应该使用正则表达式来解析源代码。为工作使用正确的工具...正则表达式不是正确的工具,因为很难考虑上下文。您已经亲自观察到此问题。
话虽如此,通常来说,您可以在正则表达式中使用组来仅获取匹配项的一部分。
例如,正则表达式a(b)c
将匹配字符串abc
,但是结果将包含两个组。
第一组是完全匹配abc
。
第二组是第一个子组b
。
匹配C ++中单行注释的示例如下所示:
//(.*?)\n
然后,第一个子组将仅包含注释文本。