java - 在文本中查找单词

标签 java pattern-matching match java.util.scanner

下面的代码似乎工作正常

String key = "jumps"   
String text = "the quick brown fox jumps over the lazy dog";  
if (text.matches(".*\\b"+key+"\\b.*"))
    System.out.println("Match");

if 语句为 TRUE,我将 MATCH 打印出来。 但这就是我需要做的:
创建一个名为 text.txt 的文件,并在其中放入“敏捷的棕色狐狸跳过懒狗”。

String text = new Scanner( new File("test.txt") ).useDelimiter("\\A").next();
String key = "jumps" 
if (text.matches(".*\\b"+key+"\\b.*"))
    System.out.println("Match");

只有当 test.txt 文件中只有一行时,此匹配才有效。
如果文件中有一行 - if 语句为 TRUE。
如果我创建包含两行的文件 -
敏捷的棕色狐狸跳过了懒狗
敏捷的棕色狐狸跳过了懒狗

那么 if 语句似乎永远不会成立。
关于为什么以及我可以做什么来让这个匹配与文件一起工作有什么想法吗?

最佳答案

. 与换行符不匹配,因此当您有新行时,它会失败。使用 \s 匹配换行符。

我不是正则表达式专家,但 (.|\s) 是使用 | (OR 符号)将两者结合起来的一种方式。该组合应匹配任何字符,包括换行符。因此,你的表达就变成了

“(.|\\s)*\\b”+ key +“\\b(.|\\s)*”

关于java - 在文本中查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055271/

相关文章:

neo4j - 如何只匹配两个节点之间的一种关系

regex - 从 ARRAYFORMULA 中排除字符串

javascript - 正则表达式全局匹配术语直到分隔符,结果不带术语/分隔符

java - Liquibase 变更集 changeLogPropertyDefined - 多个属性

java - getSubimage 给了我期望 null

scala - 从向量到各个变量的多重赋值

r - 通过匹配模式向 data.frame 列添加特定值

haskell - Haskell 中的模式匹配等效变量,例如 Prolog

java - 如何立即关闭executorservice中的所有线程?

java - 如何使用 setter 和 getter 方法获取对象的对象数组及其响应