如何在 r (str_) 中用 alnum 否定任何字母数字字符
how to negate any alphanumeric character with alnum in r (str_)
我想使用 [:alnum:]
在 r 中重写以下正则表达式,在我看来应该做同样的事情:
starwars %>% mutate(name = str_replace_all(name, "[^a-zA-Z\d\s:\u00C0-\u00FF]", ""))
但是我得到的行为完全不是我所期望的:
starwars %>% mutate(name = str_replace_all(name, "[^:alnum:]", ""))
顺便说一下,我需要删除下划线 _
和所有空格。
您可以使用
library(stringr)
str_replace_all(name, "[^[:alnum:]]+", "")
## or
str_replace_all(name, "[:^alnum:]+", "")
[^[:alnum:]]
模式是一个取反的 括号表达式 ([^...]
),它匹配除字母和数字以外的任何字符 ([:alnum:]
,一个 POSIX 字符 class).
[:^alnum:]
模式是 POSIX 字符 class 的扩展,具有相反的含义。
+
是一个量词,它匹配它所量化的模式的一次或多次出现。
此外,在 stringr
中,shorthand 字符 class 支持 Unicode,因此您也可以使用
str_replace_all(name, "[\W_]+", "")
其中 \W
匹配 Unicode 字母、数字或下划线以外的任何字符,_
匹配下划线。
我想使用 [:alnum:]
在 r 中重写以下正则表达式,在我看来应该做同样的事情:
starwars %>% mutate(name = str_replace_all(name, "[^a-zA-Z\d\s:\u00C0-\u00FF]", ""))
但是我得到的行为完全不是我所期望的:
starwars %>% mutate(name = str_replace_all(name, "[^:alnum:]", ""))
顺便说一下,我需要删除下划线 _
和所有空格。
您可以使用
library(stringr)
str_replace_all(name, "[^[:alnum:]]+", "")
## or
str_replace_all(name, "[:^alnum:]+", "")
[^[:alnum:]]
模式是一个取反的 括号表达式 ([^...]
),它匹配除字母和数字以外的任何字符 ([:alnum:]
,一个 POSIX 字符 class).
[:^alnum:]
模式是 POSIX 字符 class 的扩展,具有相反的含义。
+
是一个量词,它匹配它所量化的模式的一次或多次出现。
此外,在 stringr
中,shorthand 字符 class 支持 Unicode,因此您也可以使用
str_replace_all(name, "[\W_]+", "")
其中 \W
匹配 Unicode 字母、数字或下划线以外的任何字符,_
匹配下划线。