当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PySpark SQL Functions regexp_extract方法用法及代码示例


PySpark SQL 函数的 regexp_extract(~) 方法使用正则表达式提取子字符串。

参数

1.str | stringColumn

将提取其子字符串的列。

2. pattern | stringRegex

用于子字符串提取的正则表达式模式。

3. idx | int

从中提取值的组。请参阅下面的示例以进行说明。

返回值

新的 PySpark 列。

例子

考虑以下PySpark DataFrame:

df = spark.createDataFrame([['id_20_30', 10], ['id_40_50', 30]], ['id', 'age'])
df.show()



+--------+---+
|      id|age|
+--------+---+
|id_20_30| 10|
|id_40_50| 30|
+--------+---+

提取特定子串

要提取每个 id 值中的第一个数字,请使用 regexp_extract(~),如下所示:

from pyspark.sql import functions as F
df.select(F.regexp_extract('id', '(\d+)', 1)).show()



+----------------------------+
|regexp_extract(id, (\d+), 1)|
+----------------------------+
|                          20|
|                          40|
+----------------------------+

此处,正则表达式 (\d+) 匹配一位或多位数字(在本例中为 2040)。我们将第三个参数值设置为1,以表明我们有兴趣提取第一个匹配的组 - 当我们捕获多个组时,此参数很有用。

提取n-th捕获的子字符串

我们可以对 regexp_extract(~) 使用多个 (~) 捕获组,如下所示:

from pyspark.sql import functions as F
df.select(F.regexp_extract('id', '(\d+)_(\d+)', 2)).show()



+----------------------------------+
|regexp_extract(id, (\d+)_(\d+), 2)|
+----------------------------------+
|                                30|
|                                50|
+----------------------------------+

在这里,我们将第三个参数值设置为2,以表明我们有兴趣提取第二组捕获的值。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark SQL Functions | regexp_extract method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。