Ваш матч находится в первой группе захвата ()
, которую вы можете сократить до:
\s(\S+)\s+HTTP
В Scala
val pattern = "\\s(\\S+)\\s+HTTP".r
Regex demo
Вы можете получить журналы, используя findAllIn:
val pattern = "\\s(\\S+)\\s+HTTP".r
val strings = List(
"""endeavor.fujitsu.co.jp - - [10/Jul/1995:00:00:15 -0400] "GET /images/ HTTP/1.0" 200 17688 """,
"""ad13-022.compuserve.com - - [10/Jul/1995:00:00:15 -0400] "GET /history/gemini/gemini-spacecraft.txt HTTP/1.0" 200 651 """,
"""pm2-15.magicnet.net - - [10/Jul/1995:00:00:15 -0400] "GET /images/launch-logo.gif HTTP/1.0" 200 1713 """,
"""204.239.199.40 - - [10/Jul/1995:00:00:16 -0400] "GET /shuttle/missions/sts-71/images/KSC-95EC-0613.gif HTTP/1.0" 200 45970 """,
"""pm1-4.tricon.net - - [10/Jul/1995:00:00:17 -0400] "GET /images/WORLD-logosmall.gif HTTP/1.0" 200 669 """,
"""scorpio.digex.net - - [10/Jul/1995:00:00:19 -0400] "GET /history/mercury/mr-3/mr-3.html HTTP/1.0" 200 1124"""
)
strings.foreach { log =>
val m = pattern.findAllIn(log).group(1)
println(m)
}
Результат
/images/
/history/gemini/gemini-spacecraft.txt
/images/launch-logo.gif
/shuttle/missions/sts-71/images/KSC-95EC-0613.gif
/images/WORLD-logosmall.gif
/history/mercury/mr-3/mr-3.html
Scala demo
Для соответствия этой строкеиз комментария:
columbia.acc.brad.ac.uk - - [10 / Jul / 1995: 00: 52: 36 -0400] "GET /ksc.html" 200 7067
Вы можете использовать:
\S+ (/(?:[^/\s]+/)*[^\s"]+)
Regex demo