我是Java的新手.我想在文本文件中搜索一个字符串.假设文件包含:
嗨,我正在学习Java.
我使用下面的模式来搜索每个确切的单词.
Pattern p = Pattern.compile("\\b"+search string+"\\b", Pattern.CASE_INSENSITIVE);
Run Code Online (Sandbox Code Playgroud)
它工作正常,但没有找到"java".如何找到这两种模式.即带边界符号和"." 在字符串的末尾.有没有人对如何解决这个问题有任何想法?
您应该解析搜索字符串,以便将点更改.为正则表达式点:\\.。请注意,单个点是正则表达式中的元字符,表示任何字符。例如,您可以将字符串中的所有点替换为\\.
如果您不想完成所有这些工作,则只需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());
}
}
Run Code Online (Sandbox Code Playgroud)
它会打印: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());
}
}
Run Code Online (Sandbox Code Playgroud)
它将打印:(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());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4250 次 |
| 最近记录: |