首页 > 解决方案 > regexp_extract 正在获取空格

问题描述

我有这个样本数据来测试regexp_extract功能。

message_txt="test 9341Come Products Preferred*TEST*TEST, the mfg SYSTEM, paid18.26 toward the"
message_txt="mfg of TR tt 100 test, paid $861.82 toward your "
message_txt="TEST 0.015% , paid $1119.00toward your "

我需要提取“payed”和“toward”之间的数值,即18.26、861.82和1119.00。我执行以下语句

regexp_extract(col("message_txt"),"(?i)paid\\s+(.*?)\\s+(?i)toward",1)

...但只有空格。

标签: scalaapache-spark

解决方案


我不知道regexp_extract(),但在我看来它像...

  • 您不希望$出现在结果中,因此您需要将其移到捕获组之外。
  • 目标之前/之后并不总是有空格,因此\\s需要是可选的。
  • 有 2nd 没有意义(?i)
  • 通常最好准确描述捕获组中允许的内容。

尝试类似:"(?i)paid\\s*\\$?([\\d.]+)\\s*toward"


推荐阅读