java regex Lookbehind 如何剪切掉部分预​​搜索结果?

标签 java regex lookbehind

我想知道如何匹配指定区域的字符串:例如我有一个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,但结果将包含两个组。

  1. 第一组是完整匹配abc
  2. 第二组是第一个子组b

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

//(.*?)\n

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

关于java regex Lookbehind 如何剪切掉部分预​​搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839971/

相关文章:

java - hibernate 和存储过程

java - 如何创建不需要绘图的简单游戏循环

java - 如何使嵌套的 JScrollPanes 正常工作?

java - 在java中从字符串中获取部分内容的最佳方法

regex - 正则表达式实现实际上需要 split() 函数吗?

c# - 正则表达式:匹配除括号内的所有单词(C#)

regex - 正则表达式 ‘(?<=#)[^#]+(?=#)’如何工作?

java - 如何使列填满整个表格?

javascript - 正则表达式验证器在 JavaScript 中不起作用

javascript - RE 仅匹配不以 value="开头的字符串