PySpark中使用正则提取字符串Becv后数字串的方法咨询
PySpark提取
Becv后可变数字串的正则方案 需求说明
从类似rasm_4_Becv0_0_1234_rasm_3exm的字符串中,提取Becv之后由数字和下划线组成的可变序列(示例中为0_0_1234)。
正则表达式写法
核心正则为:Becv([0-9_]+)
Becv:精准匹配前缀标识([0-9_]+):捕获组,匹配一个或多个数字/下划线,直到遇到第一个非数字、非下划线的字符(刚好对应目标可变串的边界)
如果需要更严格限定目标串后接下划线(避免极端场景的误匹配),可以用正向预查优化:Becv([0-9_]+)(?=_)
PySpark代码实现
使用Spark内置的regexp_extract函数完成提取,示例代码如下:
from pyspark.sql import functions as F # 假设你的DataFrame名为df,目标字符串列名为raw_str df = df.withColumn( "target_num_str", F.regexp_extract("raw_str", r"Becv([0-9_]+)", 1) )
regexp_extract第三个参数1表示提取第一个捕获组的内容(也就是我们需要的数字下划线串)- 前缀
r表示原生字符串,避免转义字符干扰
内容的提问来源于stack exchange,提问作者saloni
相关产品推荐
相关产品推荐

