1

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

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

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

4

1 回答 1

2

你真的不应该用正则表达式解析源代码。为工作使用正确的工具... 正则表达式不是正确的工具,因为很难将上下文考虑在内。你自己已经观察到了这个问题。

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

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

  1. 第一组是全场比赛abc
  2. 第二组是第一子组b

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

//(.*?)\n

第一个子组将仅包含评论文本。

于 2012-10-11T12:56:52.713 回答