【发布时间】:2016-01-07 14:48:21
【问题描述】:
我遇到了在我的 Java 程序的较大模式中查找搜索模式的问题。例如,我会尝试查找所有for 循环,但会偶然发现formula。我发现的大多数建议都是关于使用正则表达式搜索,例如
String regex = "\\b"+keyword+"\\b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(searchString);
或者这个的一些变体。我遇到的问题是我正在浏览代码,而不是像书本一样的文本,每个单词的两边都有空格。例如,这将错过我想找到的for(。还有另一种聪明的方法可以只找到整个单词吗?
编辑:感谢您的建议。关键字从字符串的第一个条目开始的情况如何?例如,
class Vec {
public:
...
};
我在哪里搜索class(或者public)。 Thanga、Austin Lee、npinti 和 Kai Iskratsch 建议的模式在这种情况下不起作用。有什么想法吗?
【问题讨论】:
-
如果
keyword包含在正则表达式中具有特殊含义的特殊符号,要从字面上匹配它们,您需要在它们前面加上斜杠,如\\b -
\\bkeyword\\b"仍将匹配for中的for(但它会跳过forum -
不确定我是否清楚这一点,但尝试匹配 ASCII 值?
-
再次
"\\b"+keyword+"\\b"将适用于所描述的所有情况