繁体   English   中英

如何使用Java获取文本文件的两行之间的文本

[英]How can I get the text between two lines of a text file using java

如何使用Java在文本文件的两行之间获取文本? 我尝试这样做,但不起作用:

String input = "!!!Error deploying file order\\POST_ORDER_UpdateTaxAmountCurrInCo.sql at 22-JUL-16 08:07:Chathura aBhanakana1!!!Error deploying file order\\POST_ORDER_";
Pattern p = Pattern.compile("(?<=\\b!!!Error deploying file\\b).*?(?=\\b!!!Error deploying file\\b)");
Matcher m = p.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
    System.out.println("A " + m.group());
}

更新的答案

使用正则表达式

String pattern = "([\\s\\S]*?)(!!!Error deploying file)";

以上模式的说明。

  1. *? -在零个到无限次之间匹配一个字符
  2. \\ s-匹配任何空格字符
  3. \\ S-匹配任何非空白字符

示例代码:

String line = "!!!Error deploying file order\\POST_ORDER_UpdateTaxAmountCurrInCo.sql at 22-JUL-16 08:07:Chathura aBhanakana1!!!Error deploying file order\\POST_ORDER_UpdateTaxAmountChathura aBhanakana1AAAAA !!!Error deploying file order\\POST";

String pattern = "([\\s\\S]*?)(!!!Error deploying file)";

// Create a Pattern object
Pattern r = Pattern.compile(pattern);

// Now create matcher object.
Matcher m = r.matcher(line);
while (m.find( )) {
  String str = m.group(1);
  if(str != null && !str.isEmpty()){
     System.out.println("Found value: " + str );
   }
} 

输出量

  1. 找到的值:在16年7月22日08:07的order \\ POST_ORDER_UpdateTaxAmountCurrInCo.sql:Chathura aBhanakana1
  2. 找到的值:order \\ POST_ORDER_UpdateTaxAmountChathura aBhanakana1AAAAA

在这里检查输出

使用拆分方法

示例代码:

String line = "!!!Error deploying file order\\POST_ORDER_UpdateTaxAmountCurrInCo.sql at 22-JUL-16 08:07:Chathura aBhanakana1!!!Error deploying file order\\POST_ORDER_UpdateTaxAmountChathura aBhanakana1AAAAA !!!Error deploying file order\\POST";

for (String retval: line.split("!!!Error deploying file")){
       System.out.println(retval);
 }

输出:

1 ) order\POST_ORDER_UpdateTaxAmountCurrInCo.sql at 22-JUL-16 08:07:Chathura aBhanakana1
2) order\POST_ORDER_UpdateTaxAmountChathura aBhanakana1AAAAA
3) order\POST

在这里检查输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM