Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Pyspark SparkSQL regex在空格之前获取子字符串_Java_Regex_Pyspark_Apache Spark Sql_Amazon Athena - Fatal编程技术网

Java Pyspark SparkSQL regex在空格之前获取子字符串

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_摘

我用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([^\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]+
    -一个或多个数字

它给出了X10003-10447-XXX-20443(营地)作为回应,而不是我想要的want@shzyincu:真的吗?它不应该,它应该在第一个空格前停止。它起作用了:)它也可以和RLIKE一起工作吗?@shzyncu它也应该和RLIKE一起工作。我想你甚至不需要括号,它们只是用来告诉我们要提取什么。在RLIKE中,它不提取任何内容,正则表达式只用于测试那里的匹配。