You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中使用rlike匹配含COIN字段并排除指定字符串的正则优化

修改后的Scala正则表达式实现

需求回顾

需要检查DataFrame的company_name列值:

  1. 包含COIN相关内容,但排除CRYPTOCOIN、KUCOIN、COINBASE这三个字符串
  2. 同时匹配BTCBIT.NET

修改后的代码

val CRYPTO_CARD_INDICATOR: String = "(?!.*(CRYPTOCOIN|KUCOIN|COINBASE)).*COIN.*|BTCBIT\\.NET"
val CryptoCheckDataset = df.withColumn(
  "is_crypto_indicator",
  when(upper(col("company_name")).rlike(CRYPTOCOIN_CARD_INDICATOR), 1).otherwise(0)
)

正则逻辑拆解

  • (?!.*(CRYPTOCOIN|KUCOIN|COINBASE)):负向先行断言,确保字符串里不包含指定的三个排除项
  • .*COIN.*:匹配任意包含COIN的字符串(.*代表任意字符可出现任意次数)
  • |BTCBIT\\.NET:逻辑或规则,直接匹配BTCBIT.NET(正则中点号是通配符,必须用\\.转义才能表示实际的点字符)

补充说明

因为代码中已经通过upper(col("company_name"))将列值转为大写,所以正则直接使用大写匹配即可,无需额外添加忽略大小写的标记。

内容的提问来源于stack exchange,提问作者sk306

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:30:38