Java在字符串中查找单词

Java在字符串中查找单词,java,regex,Java,Regex,我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但上面说找到了0个匹配项 我使用正则表达式,因为我认为这是最好的方法。如果有更好的办法,请告诉我 我需要在HTML源代码中查找单词“hsw.ads”的出现 我已采取以下步骤 int count = 0; { Pattern p = Pattern.compile(".*(hsw.ads).*"); Matcher m = p.matcher(SourceCode); while(m.f

我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但上面说找到了0个匹配项

我使用正则表达式,因为我认为这是最好的方法。如果有更好的办法,请告诉我

我需要在HTML源代码中查找单词“hsw.ads”的出现

我已采取以下步骤

int count = 0;
{
    Pattern p = Pattern.compile(".*(hsw.ads).*");
    Matcher m = p.matcher(SourceCode);
    while(m.find())count++;
}
但计数为0

请告诉我你的解决方案

多谢各位。 求助者

您没有匹配任何“表达式”,因此可能简单的字符串搜索会更好。has
StringUtils.countMatches(源代码,“yourword”)


如果不想包含commons lang,可以手动编写。只需多次使用
source.indexOf(“yourword”,x)
,每次都提供一个更大的
x
(即偏移量),直到它得到-1

为止。要在Java中查找字符串,您可以使用字符串方法
indexOf
,它告诉您搜索的字符串的第一个字符的索引。要找到所有这些数据并计算它们,您可以这样做(可能有一种更快的方法,但这应该有效)。我建议使用StringUtils CountMatches方法

String temp = string; //Copy to save the string
int count = 0;
String a = "hsw.ads";
int i = 0;

while(temp.indexOf(a, i) != -1) {
    count++;
    i = temp.indexof(a, i) + a.length() + 1;
}
StringUtils.countMatches(源代码,“hsw.ads”)应该可以工作,但是按照上面的方法(这是有效的),我推荐几件事: 1.正如John Haager所提到的,删除开始/结束。*会有所帮助,因为您正在寻找确切的子字符串 2.您希望转义“.”,因为您正在搜索文字“.”,而不是通配符 3.我会使这个模式成为一个常量,并重复使用它,而不是每次都重新创建它

尽管如此,我仍然建议使用上述方法,但我想我应该指出,您当前的方法在概念上并没有缺陷;只是缺少一些实现细节。

您应该试试这个

private int getWordCount(String word,String source){
        int count = 0;
        {
            Pattern p = Pattern.compile(word);
            Matcher m = p.matcher(source);
            while(m.find()) count++;
        }
        return count;
    }

在字符串中传递要搜索的单词(而不是模式)。

您的代码和正则表达式有效。您不需要在正则表达式的开头和结尾包含。*。例如:

String t = "hsw.ads hsw.ads hsw.ads";
int count = 0;
Matcher m  = Pattern.compile("hsw\\.ads").matcher(t);
while (m.find()){ count++; }

在本例中,计数为3。还有一件事,如果你要使用正则表达式,如果你真的想在hsw和ads之间寻找一个“.”周期,你需要避开它。

从模式的开头和结尾删除通配符,然后再试一次。最好使用
indexOf(a,i)
其中,
i
每次都会增加
temp=string
。为什么不直接引用
string
?@Steve Kuo最初我是在索引上使用子字符串,我不想把字符串搞乱。但既然我改了,没有理由不改。嗨,波佐。谢谢你的回复。我可以知道使用StringUtils要导入的包吗?我添加了一个到commons-lang的链接。您必须将jar添加到您的类路径中。然后FQN是org.apache.commons.lang3.StringUtilsOk。。谢谢我已经在我的包和其他包中包含了commons lang。这就是为什么EclipseIDE为该类建议了不止一种操作,所以我问了你们。谢谢你们@Mayur这就是我想要的。