java - 最后一个分隔符似乎错误

标签 java regex delimiter

我有一个包含以下字符串的文本文件:

I want to know. bye bye. I found you. I hate you. I hear you.

我想做的是在文件中搜索目标句子。 这是我使用的代码:

public String lookFor(String target, File targetDestination) throws FileNotFoundException {
    Scanner scan = new Scanner(targetDestination);

    scan.useDelimiter("\\. ");
    while (scan.hasNext()) {
        if (scan.next().compareTo(target) == 0)
            return target;
    }
    return "Sorry,(" + target + ") cannot be found!";
}

每当我尝试查找任何句子(例如:“我恨你”)时,代码都会正常工作,它会返回“我恨你”,但是当我尝试返回最后一句“我听到你”时,它会说:直到我添加一个点“我听到你了”,才找到它。然后它返回它。

谁能解释一下究竟发生了什么?我感觉是分隔符,但是我对正则表达式不太了解。

最佳答案

"\\." 是一个正则表达式,匹配一个点后跟一个空格。

看看你的句子:

I want to know. bye bye. I found you. I hate you. I hear you.
              ↑        ↑            ↑           ↑
      dot followed by a space    dot followed by a space 

但是,如果是“我听到你了。”,则最后一个点后面不带空格

注意:使用调试器可以节省您的时间,并使您更好地理解代码。

关于java - 最后一个分隔符似乎错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29877018/

相关文章:

java - 如何动态选择类(class)?

java - 从数组列表调用方法

仅当调用 System.out.println 时才会调用 Java 重写方法

javascript - 用双引号捕获所有内容(可选)正则表达式 javascript

java - 如何从带有 html 链接和其他文本的巨大字符串中解析出 html 链接 (Java)

java - 使用mockito模拟控制台

regex - Python 3 : Splitting by\x0 as a delimiter in a string

regex - 行长和多行输入的正则表达式

Java 扫描器令人头疼

c# - 为什么 Regex.Split 在正则表达式上拆分时保留分隔符