gpt4 book ai didi

java - 仅在 Java 字符串搜索中查找整个单词

转载 作者:行者123 更新时间:2023-12-01 21:54:11 24 4
gpt4 key购买 nike

我遇到了在 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 提出的模式在这种情况下不起作用。有什么想法吗?

最佳答案

在您的情况下,问题\b 标志将查找标点符号、空格以及字符串的开头或结尾。左括号不属于任何这些类别,因此被省略。

解决此问题的最简单方法是将 "\\b"+keyword+"\\b" 替换为 "[\\b(]"+keyword+"[\\b)]”

在正则表达式语法中,方括号表示正则表达式引擎将尝试匹配其包含的任何字符的一组。

根据 this上一个SO问题,似乎 \b[\b] 不一样。 \b 表示单词边界,而 [\b] 表示退格字符。要解决此问题,只需将 "\\b"+keyword+"\\b" 替换为 "(\b|\()"+keyword+"(\b|\))".

关于java - 仅在 Java 字符串搜索中查找整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com