簡體   English   中英

有人可以為Scala的apache訪問日志文件計算正則表達式嗎?

[英]Can someone compute a regular expression for apache access log files for Scala?

我在Scala中使用以下正則表達式

val Pattern = """^(\S+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) (\S+)" (\d{3}) (\d+)""".r

val res = Pattern.findFirstMatchIn(logFile)

但這給了我以下錯誤:

: Cannot parse log line: 80-219-148-207.dclient.hispeed.ch - - [07/Mar/2004:19:47:36 -0800] "OPTIONS * HTTP/1.0" 200 -

問題是您的正則表達式期望最后一個參數為數字( \\d+ -一個或多個數字),但是它以- (未知,未定義)出現。 以前的子模式工作正常,因為\\S+ (1個或多個非空白)與連字符匹配。

因此,用\\S+替換最后一個\\d+或使用替代(\\d+|-) 后一種方法可以擴展到所有模式部分,如下所示:

^(\S+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) (\S+)" (\d{3}|-) (\d+|-)
                                                                       ^^      ^^

參見regex演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM