regexp_replace[重复]中的Regex问题

问题描述 投票:0回答:1

问题

SparkR的regexp_replace应该遵循Java regex规则,但我很难识别某些符号。

重排

在这个版本中,我可以识别"<"、"-"和"",但不能识别"> "或 "+"。

# Load packages
library(tidyverse)
library(sparklyr)
library(SparkR)

# Create data
df <- data.frame(test = c("<5", ">5", "3(a)", "a-a", "b+b", "c/c", "d  d", "3..3"))

# Transfer data to Spark memory
df <- copy_to(sc, df, "df", overwrite = TRUE)

# Modify data
df1 <- df %>%
  dplyr::mutate(
    test = regexp_replace(test, "[<]", "_"),
    test = regexp_replace(test, "[>]", "_"),
    test = regexp_replace(test, "[-]", "_"),
    test = regexp_replace(test, "[+]", "_"),
    test = regexp_replace(test, "[/]", "_"))


# Collect and print results
df2 <- df1 %>% as.data.frame()
df2

解决方法

# Load packages
library(tidyverse)
library(sparklyr)
library(SparkR)

# Create data
df <- data.frame(test = c("<5", ">5", "3(a)", "a-a", "b+b", "c/c", "d  d", "3..3"))

# Transfer data to Spark memory
df <- copy_to(sc, df, "df", overwrite = TRUE)

# Modify data
df1 <- df %>%
  dplyr::mutate(
    test = regexp_replace(test, "[<>+/-]", "_"))


# Collect and print results
df2 <- df1 %>% as.data.frame()
df2
java r regex sparkr
1个回答
0
投票

不知道sparkr是如何工作的,但你可以做这样的事情。

df1 <- df %>%
  dplyr::mutate(
    test = regexp_replace(test, "[<>+/-]", "_"),

在这个案例中 / 你可能不得不这样做。

    test = regexp_replace(test, "[<>+\\/-]", "_"),
© www.soinside.com 2019 - 2024. All rights reserved.