您的位置:首页 > 汽车 > 时评 > 国家企业信息公示系统官网河南_国外化工产品b2b网站_常见搜索引擎有哪些_企业推广方法

国家企业信息公示系统官网河南_国外化工产品b2b网站_常见搜索引擎有哪些_企业推广方法

2025/4/8 23:36:30 来源:https://blog.csdn.net/zhixingheyi_tian/article/details/146521789  浏览:    关键词:国家企业信息公示系统官网河南_国外化工产品b2b网站_常见搜索引擎有哪些_企业推广方法
国家企业信息公示系统官网河南_国外化工产品b2b网站_常见搜索引擎有哪些_企业推广方法

regex

函数提取
import scala.util.matching.Regex// 输入表达式
val expression = "[a#0, round(a#0, 0) AS round(a, 0)#1, abs(a#0) AS abs(a)#2, len(cast(a#0 as string)) AS len(a)#3]"// 定义一个正则表达式来提取函数名称
val functionPattern: Regex = """(\w+)\((.*?)\)""".r// 提取所有函数的名称并去重
val functions = functionPattern.findAllIn(expression).matchData.map(m => m.group(1))  // 只提取函数名.toList  // 转换为List.distinct  // 去重// 打印结果
println(functions)
object ExtractFunctionNames {def main(args: Array[String]): Unit = {val input = "[round(a#0, 2) AS round(a, 2)#1, a#0]"// 使用正则表达式匹配所有类似于函数名的部分val regex = """([a-zA-Z_][a-zA-Z0-9_]*)\(""".r// 提取所有函数名并去重val functionNames = regex.findAllIn(input).matchData.map(_.group(1)) // 获取匹配的函数名.toSet  // 使用 Set 去重// 输出去重后的函数名println(functionNames)}
}
提取 Aggregate 函数
import scala.util.matching.Regexval expr = "HashAggregate(keys=[ss_store_sk#9], functions=[sum(UnscaledValue(ss_sales_price#15)), sum(UnscaledValue(ss_net_profit#24))])"// 定义正则表达式来匹配functions=后的函数列表
val pattern: Regex = """functions=\[(.*?)\]""".r// 从字符串中查找匹配到的函数列表
val functionList = pattern.findAllMatchIn(expr).flatMap { m =>// 通过逗号分隔函数名,然后提取每个函数名val functions = m.group(1).split(",").map(_.trim) // 按逗号分隔并去除多余空格functions.map { f =>// 提取函数名(去掉函数名后的括号)f.split("\\(")(0)}
}.toList.distinctprintln(functionList)
提取 Window 函数
import scala.util.matching.Regex// 输入字符串
val input = "[ss_store_sk#9, ss_customer_sk#5], [ss_sold_date_sk#2 DESC NULLS LAST], row_number(), 1, Final"// 使用正则表达式:匹配函数名(以括号 `()` 结尾的部分)
val pattern: Regex = """(\w+)(?=\()""".r// 使用正则表达式提取函数名
val functionNames = pattern.findAllIn(input).toSet// 输出结果
println(functionNames)  // List(row_number)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com