PySpark正则表达式引擎不匹配

Amesys

我正在研究将正则表达式应用于PySpark DataFrame列。

我不能发生重现PySpark我的工作的结果,正则表达式上regex101运行在这里

我已经尝试了几种方法(见下文),但似乎都没有用(甚至已经在特定的Java regex引擎上进行了测试)。我希望获取上面示例中显示的组。

(\w+(?:\s*|\d*)\s+RUE\s.*)
[\s\-]+(\d*\s*RUE\s+.*)

代码示例:

df = spark.createDataFrame([
    ('RESIDENCE LA VENDEENNE 80 81 RUE LOUIS LUMIERE',)
], ["adresse1"])

df.withColumn("adresse1", regexp_replace("adresse1", "(\w+(?:\s*|\d*)\s+RUE\s.*)", '$1')).show(truncate=False)

我得到的输出是我未更改的列:

+-----------------------------------------------+
|adresse1                                       |
+-----------------------------------------------+
|RESIDENCE LA VENDEENNE 80  81 RUE LOUIS LUMIERE|
+-----------------------------------------------+

当我期望该列的价值为

81 RUE LOUIS LUMIERE

到目前为止,我完全没有任何猜测,尤其是当我之前的那些按预期工作时(匹配)。


Spark配置

  • 版本2.4.0-cdh6.2.0
  • Scala版本2.11.12
  • OpenJDK 64位服务器VM,1.8.0_222
保利

我认为您应该使用regexp_extract而不是regexp_replace

from pyspark.sql.functions import regexp_extract

df.withColumn(
    "adresse1", 
    regexp_extract("adresse1", r"(\w+(?:\s*|\d*)\s+RUE\s.*)", 1)
).show(truncate=False)
#+--------------------+
#|adresse1            |
#+--------------------+
#|81 RUE LOUIS LUMIERE|
#+--------------------+

要在模式不匹配时保持列值不变,可以使用pyspark.sql.Column.rlikewhen

from pyspark.sql.functions import col, when

pat = r"(\w+(?:\s*|\d*)\s+RUE\s.*)"

df.withColumn(
    "adresse1", 
    when(
        col("adresse1").rlike(pat), regexp_extract("adresse1", pat, 1)
    ).otherwise(col("adresse1"))
).show(truncate=False)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式或不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

表达式不匹配正则表达式

来自分类Dev

匹配单词的正则表达式,或者不匹配

来自分类Dev

Python正则表达式搜索,匹配不匹配

来自分类Dev

完全匹配的正则表达式不部分匹配

来自分类Dev

正则表达式匹配不匹配的内容

来自分类Dev

正则表达式匹配任何字符或不匹配?

来自分类Dev

正则表达式匹配数字或不匹配

来自分类Dev

完全匹配的正则表达式不部分匹配

来自分类Dev

C ++正则表达式匹配,不匹配

来自分类Dev

正则表达式匹配(如果不...返回不...)

来自分类Dev

正则表达式与PHP中的正则表达式不匹配

来自分类Dev

正则表达式的正则表达式在Python中不匹配

来自分类Dev

正则表达式与PHP中的正则表达式不匹配

来自分类Dev

在PySpark中提取几个正则表达式匹配

来自分类Dev

POSIX正则表达式不匹配

来自分类Dev

如何使正则表达式不匹配?

来自分类Dev

正则表达式不匹配新行

来自分类Dev

matchstr与vimscript中的正则表达式不匹配

来自分类Dev

正则表达式与换行符不匹配

来自分类Dev

组1不匹配每个正则表达式

来自分类Dev

正则表达式不匹配C ++

来自分类Dev

正则表达式在C#中不匹配