使用正则表达式预定义 class,但 R 中存在异常
using regex predefined class with an exception in R
所以我试图根据所有标点符号和 space 在字符串中出现的任何位置(因此是 + 符号)拆分我的字符串,除了“#”和“/”,因为我不知道不希望它分裂 #n/a 它所做的。我确实在这个问题上进行了很多搜索,但无法找到解决方案。有什么建议吗?
t<-"[[:punct:][:space:]]+"
bh <- tolower(strsplit(as.character(a), t)[[1]])
我也试过将以下内容存储到 t 但它也给出错误
t<-"[!"$%&'()*+,\-.:;<=>?@\[\\]^_`{|}~\ ]+"
错误:"t<-"[!"\"
中的意外输入
一个替代方法是替换#n/a,但我想知道如何在不必这样做的情况下做到这一点。
您可以使用具有前瞻性的 PCRE 正则表达式来限制括号表达式模式:
t <- "(?:(?![#/])[[:punct:][:space:]])+"
bh <- tolower(strsplit(as.character(a), t, perl=TRUE)[[1]])
(?:(?![#/])[[:punct:][:space:]])+
模式匹配 1 次或多次重复的任何非 #
和 /
字符的标点符号或空格。
参见regex demo。
如果您想在括号表达式中拼出要匹配的符号,您可以修改其他模式,如
t <- "[][!\"$%&'()*+,.:;<=>?@\\^_`{|}~ -]+"
注意]
必须紧跟在[
之后,表达式里面的[
不需要转义,-
可以不转义放在最后,一个 \
应该用 4 个反斜杠定义。 $
不必转义。
所以我试图根据所有标点符号和 space 在字符串中出现的任何位置(因此是 + 符号)拆分我的字符串,除了“#”和“/”,因为我不知道不希望它分裂 #n/a 它所做的。我确实在这个问题上进行了很多搜索,但无法找到解决方案。有什么建议吗?
t<-"[[:punct:][:space:]]+"
bh <- tolower(strsplit(as.character(a), t)[[1]])
我也试过将以下内容存储到 t 但它也给出错误
t<-"[!"$%&'()*+,\-.:;<=>?@\[\\]^_`{|}~\ ]+"
错误:"t<-"[!"\"
中的意外输入一个替代方法是替换#n/a,但我想知道如何在不必这样做的情况下做到这一点。
您可以使用具有前瞻性的 PCRE 正则表达式来限制括号表达式模式:
t <- "(?:(?![#/])[[:punct:][:space:]])+"
bh <- tolower(strsplit(as.character(a), t, perl=TRUE)[[1]])
(?:(?![#/])[[:punct:][:space:]])+
模式匹配 1 次或多次重复的任何非 #
和 /
字符的标点符号或空格。
参见regex demo。
如果您想在括号表达式中拼出要匹配的符号,您可以修改其他模式,如
t <- "[][!\"$%&'()*+,.:;<=>?@\\^_`{|}~ -]+"
注意]
必须紧跟在[
之后,表达式里面的[
不需要转义,-
可以不转义放在最后,一个 \
应该用 4 个反斜杠定义。 $
不必转义。