Извлечение десятичных чисел из строки в Sparklyr - PullRequest
1 голос
/ 19 июня 2019

Я пытался извлечь десятичные числа из строк в sparklyr, но он не работает с обычным синтаксисом, который вы обычно используете за пределами Spark.

Я пытался использовать regexp_extract, но он возвращает пустые строки.

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

Я пытаюсь получить 170,5 в результате.

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

Вы можете использовать regexpr с базы R

v <- "$170.5M"
regmatches(v, regexpr("\\d*\\.\\d", v))
# [1] "170.5"
0 голосов
/ 19 июня 2019

Вы можете использовать

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

Или

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

Ваше регулярное выражение [[:digit:]]+\.*[[:digit:]]* не работает, поскольку regexp_extract ожидает Java-совместимый шаблон регулярных выражений, и этот движок не поддерживает классы символов POSIX в синтаксисе [:classname:]. Вы можете использовать digit класс символов POSIX, например \p{Digit}, см. Документация по Java regex .

См. regexp_extract документация :

Извлечение определенной (idx) группы, указанной в регулярном выражении Java, из указанного строкового столбца.

...