gpt4 book ai didi

scala - 如何使用正则表达式在 Scala 中提取匹配字符串?

转载 作者:行者123 更新时间:2023-12-01 21:28:20 27 4
gpt4 key购买 nike

字符串为

var filedate = parser("test_pb_PP_Quality_2-Report_20200707.csv");

提取“20200707”的解析器函数如下。

def parser(filename: String):String = {
val extractDate = """(\d{8}).*""".r
val extractDate(dd) = filename;
dd;
}

但它在线程“主”scala.MatchError 中作为异常返回错误:

最佳答案

默认情况下,使用 .r 方法创建的正则表达式是锚定的,这意味着它必须匹配整个字符串。 (将您的正则表达式视为包含在 ^$ 中)

您可以改用 unanchored 正则表达式:

def parser(filename: String):String = {
val extractDate = """(\d{8})""".r.unanchored
val extractDate(dd) = filename
dd
}

这行得通,但不是很好的做法,因为如果您的输入不匹配,“解析”会抛出异常。更惯用的做法是返回一个 Option[String] 并在调用站点处理它。例如:

def parser(filename: String): Option[String] = {
"""\d{8}""".r.findFirstIn(filename)
}

parser("test_pb_PP_Quality_2-Report_20200707.csv") match {
case Some(datetime) => // do something
case None => // handle this case
}

关于scala - 如何使用正则表达式在 Scala 中提取匹配字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62772524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com