从Sparklyr中的字符串中提取十进制数字

时间:2019-06-19 08:12:43

标签: r regex apache-spark sparklyr

我一直在尝试从sparklyr中的字符串中提取十进制数字,但是它不适用于通常在Spark之外使用的常规语法。

我尝试使用regexp_extract,但它返回空字符串。

regexp_extract($170.5M, "[[:digit:]]+\\.*[[:digit:]]*")

我试图得到170.5。

2 个答案:

答案 0 :(得分:2)

您可以从基数R使用regexpr

v <- "$170.5M"
regmatches(v, regexpr("\\d*\\.\\d", v))
# [1] "170.5"

答案 1 :(得分:0)

您可以使用

regexp_extract(col_value, "[0-9]+(?:[.][0-9]+)?")

regexp_extract(col_value, "\\p{Digit}+(?:\\.\\p{Digit}+)?")

您的[[:digit:]]+\.*[[:digit:]]*正则表达式不起作用,因为regexp_extract需要Java兼容的正则表达式模式,并且该引擎不支持[:classname:]语法中的POSIX字符类。您可以使用digit之类的\p{Digit} POSIX字符类,请参见Java regex documentation

请参见regexp_extract documentation

  

从指定的字符串列中提取由Java正则表达式标识的特定(idx)组。