PySpark:使用Regex删除空格后的字符-数字组合

PySpark:使用Regex删除空格后的字符-数字组合,regex,string,pyspark,character,data-cleaning,Regex,String,Pyspark,Character,Data Cleaning,我有一列字符串,其中一些是这样的:“Telefon T1”,“Post P2,…现在我想删除单词后面的所有内容。例如,Telefon T1变成了简单的Telefon。我用各种方式尝试了下面的代码,但它一直给我elephon df = df.withColumn('mycolumn', regexp_replace('mycolumn', '[*[ ]?[A-Z]?\d$]'', "")) 这不是一个pyspark问题,而是一个正则表达式问题。因此,如果您将此问题与列表一起使用,请替换“我会得

我有一列字符串,其中一些是这样的:“Telefon T1”,“Post P2,…现在我想删除单词后面的所有内容。例如,Telefon T1变成了简单的Telefon。我用各种方式尝试了下面的代码,但它一直给我elephon

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '[*[ ]?[A-Z]?\d$]'', "")) 
这不是一个pyspark问题,而是一个正则表达式问题。因此,如果您将此问题与列表一起使用,请替换“我会得到它”。谢谢您

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '^\\s*(\\S+).*', '$1'))

详细信息

  • ^
    -字符串的开头
  • \s*
    -0+空格
  • (\S+)
    -第1组(在替换模式中以
    $1
    表示):任何1个或多个非空白字符
  • *
    -字符串的其余部分,除换行符以外的0个或更多字符,尽可能多

替换模式中的
$1
replacement backreference只保留结果中的第1组值。

Try
regexp\u replace('mycolumn',r'^\s*(\s+).*,'r'\1')
这将为每行返回1。您是否使用
r'\1'
作为替换?那么,请尝试
regexp\u extract('mycolumn',r'^\s*(\s+),1)
不清楚您的环境遵循什么样的正则表达式语法。请尝试使用
regexp\u替换('mycolumn','^\\s*(\\s+.*','$1')
。或者替换为
'\\1'
。这是一个好主意。