将简单的Grep翻译成Java

时间:2011-12-19 20:36:58

标签: java regex

寻找时

grep -aiH '^WARN\|^ERROR\|^FATAL' myLogFile.log | \
...

我写了

if (!line.startsWith("ERROR") || !line.startsWith("WARN") 
           || !line.startsWith("FATAL")) {
...

但是如何考虑“i”标志,使得比较案例无动于衷?

2 个答案:

答案 0 :(得分:4)

首先使用此方法将行转换为upperCase字符串:

http://docs.oracle.com/javase/1.3/docs/api/java/lang/String.html#toUpperCase()

而不是!line.startsWith(...)!line.toUpperCase().startsWith(...)

答案 1 :(得分:1)

也可能想看看commons-lang StringUtils:

http://commons.apache.org/lang/api/org/apache/commons/lang3/StringUtils.html

例如!StringUtils.startsWithIgnoreCase(line, "ERROR")

这样做的好处也是无效的;如果line为null,则返回false而不是抛出NullPointerException。

最后 - 您还可以尝试!line.matches("(?i)(WARN|ERROR|FATAL).*")

之类的内容