我使用apache commons.io中的FileUtils使用以下代码在文件中的两个字符串之间搜索文本:
Pattern p = Pattern.compile(Pattern.quote(fromDate) + "(.*?)" + Pattern.quote(toDate));
try {
Matcher m = p.matcher(fileContent);
while (m.find()) {
System.out.println(m.group(1));
但是只有当两个字符串位于同一行时才会输出错误,如果字符串位于不同的行中则没有输出?在这里,我将整个文件的内容转换为Sting Varibale" fileContent"。
答案 0 :(得分:0)
点不会搜索多行。您需要为此Pattern.DOTALL
提供第二个参数,如下所示:
Pattern p = Pattern.compile(Pattern.quote(fromDate) + "(.*?)" + Pattern.quote(toDate), Pattern.DOTALL);
此主题也有一些很好的解释:Match multiline text using regular expression
答案 1 :(得分:0)
尝试用?s结束正则表达式,这样你的新正则表达式应该是: “(。*?S)”
在大多数情况下,匹配器在遇到换行符时停止计算表达式\ n。 当匹配正则表达式时,?s使匹配器通过\ n。