我想知道如何匹配指定区域的字符串:例如我有一个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
第一个子组将仅包含评论文本。
关于java regex Lookbehind 如何剪切掉部分预搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839971/