java - 如何在Java文件中找到简单的单词?

标签 java regex

我需要帮助。我是一名初级程序员,我尝试用正则表达式编写程序。 我尝试在我的文件中找到每一个生活单词。我有这样的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class myClass {

    public int howManyWord () {
        int count = 0;      
        try {
            BufferedReader br = new BufferedReader(new FileReader("C:/myFile.txt"));
            String line = "";
            while ((line = br.readLine()) != null) {
                Matcher m = Pattern.compile("life").matcher(line);
                while (m.find()) {
                    System.out.println("found");
                    count++;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return count;       
    }
}    

这有效。我尝试改变这一点,因为当我搜索我的单词时,当编译器发现类似“lifelife”的计数为 2 时。 我应该改变什么?

抱歉我的英语不好,请帮助我。

最佳答案

使用Pattern p = Pattern.compile("\\blife\\b");并在while循环之前设置一次模式。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class myClass {

public int howManyWord () {
    int count = 0;      
    try {
        BufferedReader br = new BufferedReader(new FileReader("C:/myFile.txt"));
        String line = "";
        Pattern p = Pattern.compile("\\blife\\b"); // compile pattern only once
        while ((line = br.readLine()) != null) {
            Matcher m = p.matcher(line);
            while (m.find()) {
                System.out.println("found");
                count++;
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    return count;       
}
}  

关于java - 如何在Java文件中找到简单的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751321/

相关文章:

regex - Python 3 Pandas 使用 Startswith + 或选择 Dataframe

java - 正则表达式检测 <code>...</code> 代码块

java - 如何在下拉列表struts 2中添加 'SELECT'选项

regex - Reg Ex Django Url Conf

.Net 正则表达式 - 如何对完整字符串进行完全匹配排除?

javascript - 用破折号验证数字

java - Jasypt 使用 Bouncy CaSTLe 的 EncryptionOperationNotPossibleException

java - 如何使 JTextField (Eclipse Window Builder) 只读

java - JSP 中的 Taglib 未运行

java - 当我在 ListView 中添加标题时,我需要执行位置 - 1 来访问后端列表