下面的代码似乎工作正常
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/