我使用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“中。
发布于 2015-11-25 18:25:08
点不会搜索多行。您需要为此Pattern.DOTALL提供第二个参数,如下所示:Pattern p = Pattern.compile(Pattern.quote(fromDate) + "(.*?)" + Pattern.quote(toDate), Pattern.DOTALL);
这个主题也很好地解释了它是如何工作的:Match multiline text using regular expression
发布于 2015-11-25 18:28:42
尝试以?s结束正则表达式,这样新的正则表达式应该是:"(.*?s)“
在大多数情况下,当匹配器遇到换行符\n时,它会停止计算表达式。当匹配器尝试匹配正则表达式时,它会传递\n。
https://stackoverflow.com/questions/33913777
复制相似问题