當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。