gpt4 book ai didi

java - 如何在 Java 中使用正则表达式查找带点的单词?

转载 作者:搜寻专家 更新时间:2023-10-31 20:13:21 25 4
gpt4 key购买 nike

我是 Java 新手。我想在文本文件中搜索一个字符串。假设文件包含:

Hi, I am learning Java.

我正在使用下面的模式来搜索每个确切的词。

Pattern p = Pattern.compile("\\b"+search string+"\\b", Pattern.CASE_INSENSITIVE);

它工作正常,但找不到“java”。如何找到这两种模式。即带有边界符号和“。”在字符串的末尾。有没有人对我如何解决这个问题有任何想法?

最佳答案

您应该解析您的搜索字符串,以便将点 . 更改为 RegEx 点:\\.。注意 a single dot is a metacharacter in Regular Expressions并表示任何字符。例如,您可以将字符串中的所有点替换为 \\.

如果您不想完成所有这些工作,那么只需发送 java\\. 作为您的搜索字符串

更多信息:

代码示例:

public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java";
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent );
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}

它将打印:17 java

public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java\\.";
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent );
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}

它将打印:17 java.(注意末尾的点)

编辑:作为一个非常基本的解决方案,因为您唯一的问题是点,您可以用 \\.

替换字符串中的所有点
public static void main(String[] args) {
String fileContent = "Hi i am learning java.";
String searchString = "java.";
//this will do the trick even if the "searchString" doesn't contain a dot inside
searchString = searchString.replaceAll("\\.", "\\.");
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(fileContent );
while(m.find()) {
System.out.println(m.start() + " " + m.group());
}
}

关于java - 如何在 Java 中使用正则表达式查找带点的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com