R中,一个关于正则表达式的问题-stringr package (str_remove_all)
In R, a question about regular expressions -stringr package (str_remove_all)
在R中,有一个字符'X201A61NA231.1W',我想替换所有字母和'NA','.1'。但是下面的代码失败了。任何人都可以帮忙吗?谢谢。
library(stringr)
t_chart <- 'X201A61NA231.1W'
t_chart %>% str_remove_all('[X|NA|W|(/.1)]')
你可以使用-
t_chart <- 'X201A61NA231.1W'
stringr::str_remove_all(t_chart, '[A-Z]|\.1')
#[1] "20161231"
在基础 R 中使用 gsub
-
gsub("[A-Z]|\.1", "", t_chart)
您可以列出要在一个字符 class 中删除的所有单个字符并重复该操作 1 次或多次,因为有 NA
但也有一个 A
并在字符 class 之外使用交替 |
来匹配带有反斜杠的 .1
以转义点。
注意字符 class 内的 |
匹配管道字符。
t_chart <- 'X201A61NA231.1W'
gsub("[XWNA]+|\.1", "", t_chart)
输出
[1] "20161231"
[X|NA|W|(/.1)]
模式是一个 字符 class。它匹配 class 中定义的任何 单个 字符。因此,它匹配 X
、|
、N
、A
、W
、(
、/
、.
, 1
或 )
个字符。
当你需要匹配 sequences 字符时,你应该使用 grouping constructs like capturing or non-capturing groups with alternation ((...|...)
或 (?:...|...)
), 或者 - 如果这些交替是整个模式,只需使用 |
OR 运算符来分隔替代而不进行任何分组。
要匹配任何字母,您可以使用 \p{L}
或 [:alpha:]
,如果您只需要处理 ASCII 字母,甚至可以使用 [a-zA-Z]
。要匹配后跟 1
的点,您需要 \.1
(请注意转义点,因为它是一个特殊的正则表达式元字符)。
您的代码可以固定为
t_chart %>% str_remove_all('[[:alpha:]]+|\.1')
t_chart %>% str_remove_all('\p{L}+|\.1')
t_chart %>% str_remove_all('[a-zA-Z]+|\.1')
注意 R 字符串文字中的双转义反斜杠。
在R中,有一个字符'X201A61NA231.1W',我想替换所有字母和'NA','.1'。但是下面的代码失败了。任何人都可以帮忙吗?谢谢。
library(stringr)
t_chart <- 'X201A61NA231.1W'
t_chart %>% str_remove_all('[X|NA|W|(/.1)]')
你可以使用-
t_chart <- 'X201A61NA231.1W'
stringr::str_remove_all(t_chart, '[A-Z]|\.1')
#[1] "20161231"
在基础 R 中使用 gsub
-
gsub("[A-Z]|\.1", "", t_chart)
您可以列出要在一个字符 class 中删除的所有单个字符并重复该操作 1 次或多次,因为有 NA
但也有一个 A
并在字符 class 之外使用交替 |
来匹配带有反斜杠的 .1
以转义点。
注意字符 class 内的 |
匹配管道字符。
t_chart <- 'X201A61NA231.1W'
gsub("[XWNA]+|\.1", "", t_chart)
输出
[1] "20161231"
[X|NA|W|(/.1)]
模式是一个 字符 class。它匹配 class 中定义的任何 单个 字符。因此,它匹配 X
、|
、N
、A
、W
、(
、/
、.
, 1
或 )
个字符。
当你需要匹配 sequences 字符时,你应该使用 grouping constructs like capturing or non-capturing groups with alternation ((...|...)
或 (?:...|...)
), 或者 - 如果这些交替是整个模式,只需使用 |
OR 运算符来分隔替代而不进行任何分组。
要匹配任何字母,您可以使用 \p{L}
或 [:alpha:]
,如果您只需要处理 ASCII 字母,甚至可以使用 [a-zA-Z]
。要匹配后跟 1
的点,您需要 \.1
(请注意转义点,因为它是一个特殊的正则表达式元字符)。
您的代码可以固定为
t_chart %>% str_remove_all('[[:alpha:]]+|\.1')
t_chart %>% str_remove_all('\p{L}+|\.1')
t_chart %>% str_remove_all('[a-zA-Z]+|\.1')
注意 R 字符串文字中的双转义反斜杠。