Java Pyspark SparkSQL regex在空格之前获取子字符串
我用Athena编写了一个SQL,它使用regex_extract从列中提取子字符串,它提取字符串,其中有“X10003”,并在出现空格时占用空间。例如,从Java Pyspark SparkSQL regex在空格之前获取子字符串,java,regex,pyspark,apache-spark-sql,amazon-athena,Java,Regex,Pyspark,Apache Spark Sql,Amazon Athena,我用Athena编写了一个SQL,它使用regex_extract从列中提取子字符串,它提取字符串,其中有“X10003”,并在出现空格时占用空间。例如,从5570-站点811111-X10003-10447-XXX-20443(营地)中提取X10003-10447-XXX-20443,使用雅典娜中的REGEXP_提取(站点,'X10033.*?\w+-\d+') 现在我正在将其转换为sparkSQL,但它不能正常工作,我应用了不同的方法,但没有任何效果,例如,我使用了表达式: Regexp_摘
5570-站点811111-X10003-10447-XXX-20443(营地)
中提取X10003-10447-XXX-20443
,使用雅典娜中的REGEXP_提取(站点,'X10033.*?\w+-\d+')
现在我正在将其转换为sparkSQL,但它不能正常工作,我应用了不同的方法,但没有任何效果,例如,我使用了表达式:
Regexp_摘录(“5570-站点811111-X10003-10447-XXX-20443(营地)”,“X10003([^\s]+)”)
给了我-10447-XXX-20443(营地)
,这不是我需要的
有人能告诉我我做错了什么吗?扩大捕获组:
Regexp_extract("5570 - Site 811111 - X10003-10447-XXX-20443 (CAMP)", '(X10003[^\s]+)')
# here ___^
你可以用
REGEXP_摘录(站点,”(X10003.*?[A-Za-z0-9]-[0-9]+),1)
看
(X10003.*?[A-Za-z0-9]-[0-9]+)
模式是一个ID为1且匹配的捕获组
-文字字符串X10003
-除换行符以外的零个或多个字符,尽可能少*?
-字母数字字符[A-Za-z0-9]
-连字符-
-一个或多个数字[0-9]+