我想知道如何匹配指定区域中的字符串:例如,我有一个C ++代码段:

/*
    This is .... bla bla bla...int, float,...
    @author: Tom
*/
int a;
float b;


那么我想在注释之外找出intfloat之类的关键字,该怎么做?我在想是否可以使用预搜索。但是一个简单的示例\b\w+(?<=er)\b匹配'worker','super'等单词,如果我只想将这些结果的子字符串放在er之前该怎么办。另一个示例,如果我只需要匹配行注释在c ++代码中,如果我使用//.*?\n,则\n也在结果中,但是我不需要它...
更新:
我不知道我是否已经清楚地解释了我的问题,也不知道如何给我的问题加上标题... :(

最佳答案

您确实不应该使用正则表达式来解析源代码。为工作使用正确的工具...正则表达式不是正确的工具,因为很难考虑上下文。您已经亲自观察到此问题。

话虽如此,通常来说,您可以在正则表达式中使用组来仅获取匹配项的一部分。

例如,正则表达式a(b)c将匹配字符串abc,但是结果将包含两个组。


第一组是完全匹配abc
第二组是第一个子组b


匹配C ++中单行注释的示例如下所示:

//(.*?)\n


然后,第一个子组将仅包含注释文本。

09-30 17:49
查看更多