gpt4 book ai didi

regex - 在 Scala 中将正则表达式可选组设置为 None

转载 作者:行者123 更新时间:2023-12-02 01:58:01 25 4
gpt4 key购买 nike

我有以下正则表达式模式匹配完全限定的 Microsoft SQL Server 表名称 ([dbName].[schemaName].[tableName]),其中模式名称是可选的:

val tableNamePattern = """\[(\w+)\](?:\.\[(\w+)\])?\.\[(\w+)\]""".r

我是这样使用它的:

val tableNamePattern(database, schema, tableName) = fullyQualifiedTableName

当架构名称缺失时(例如:[dbName].[tableName]),schema 值将设置为 null

是否有 Scala 惯用的方法将其设置为 None,并在提供 schemaName 时设置为 Some(schema)

Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems. -- Jamie Zawinski

最佳答案

我将从链接问题的已接受答案中复制代码,但也不会给出任何信用。在这里:

object Optional {
def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a))
}

val tableNamePattern(database, Optional(schema), tablename) = fullyQualifiedTableName

PS:我今天刚刚在 Twitter 上想知道创建特殊案例提取器是否像他们建议的那样普遍。 :)

关于regex - 在 Scala 中将正则表达式可选组设置为 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794396/

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