1.正则表达式:
与正则表达式相关的类是scala.util.matching.Regex类,要构造一个Regex对象,使用String类的r方法即可,如果正则表达式中包含反斜杠或引号之类的需要转义的字符,那么最好是使用原始(raw)字符串,以三个”号包围
val apacheLogRegex = """^([\d.]+) (\S+) (\S+) \[([\w\d:/]+\s[+\-]\d{4})\] "(.+?)" (\d{3}) ([\d\-]+) "([^"]+)" "([^"]+)".*""".r def extractKey(line: String): (String, String, String) = { apacheLogRegex.findFirstIn(line) match { case Some(apacheLogRegex(ip, _, user, dateTime, query, status, bytes, referer, ua)) => if (user != "\"-\"") (ip, user, query) else (null, null, null) case _ => (null, null, null) } }
apacheLogRegex.findFirstIn(line) // 在line中找到首个匹配apacheLogRegex的匹配项
findPrefixOf()方法检查某个字符串的开始部分是否能够匹配。
时间: 2024-10-10 21:25:45