我有以下正则表达式模式,它与完全限定的Microsoft表名([dbName].[schemaName].[tableName]
)匹配,其中模式名是可选的:
val tableNamePattern = """\[(\w+)\](?:\.\[(\w+)\])?\.\[(\w+)\]""".r
我就是这样用的:
val tableNamePattern(database, schema, tableName) = fullyQualifiedTableName
当缺少模式名称(例如:[dbName].[tableName]
)时,schema
值将被设置为null
。
是否有一种Scala习惯方法来将其设置为None
,并在提供schemaName时将其设置为Some(schema)
?
有些人在遇到问题时会想:“我知道,我会使用正则表达式。”现在他们有两个问题。-杰米·扎温斯基
发布于 2013-09-13 12:24:14
我将从关于链接问题的公认答案中复制代码,并且也不给予信任。下面是:
object Optional {
def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a))
}
val tableNamePattern(database, Optional(schema), tablename) = fullyQualifiedTableName
PS:我今天在推特上想知道,创建特例提取器是否像他们建议的那样普遍。:)
https://stackoverflow.com/questions/18794396
复制相似问题