R 替换前面带空格的字符串

R 替换前面带空格的字符串,r,regex,R,Regex,我正试图从R中的字符串向量中消除一些不需要的文本,但未能实现所需的输出 我想消除一个单词的任何出现,它可能有多种变体。例如: a<-c("xyz (ALTERNA)","jqk(ALTERNA)","abc(ALTERNO)","def ( ALTERNO)","mno (ALTERNO )","pqr (ALTERNA) ") 但它产生了: [1] "xyz " "jq" "abc" "def ( ALTERNO)" "

我正试图从R中的字符串向量中消除一些不需要的文本,但未能实现所需的输出

我想消除一个单词的任何出现,它可能有多种变体。例如:

a<-c("xyz (ALTERNA)","jqk(ALTERNA)","abc(ALTERNO)","def ( ALTERNO)","mno (ALTERNO )","pqr (ALTERNA) ")
但它产生了:

[1] "xyz "           "jq"             "abc"            "def ( ALTERNO)" "mno (ALTERNO )" "pqr  "
我期望的结果是:

[1] "xyz"     "jqK"     "abc"     "def"     "mno"     "pqr"
我做错了什么?我如何纠正它? 谢谢,

我们可以尝试sub。我们匹配零个或多个空格\\s*,后跟一个括号\\,后跟一个或多个字符。*直到字符串$结束,并替换为

我们可以尝试sub。我们匹配零个或多个空格\\s*,后跟一个括号\\,后跟一个或多个字符。*,直到字符串$结束,并替换为


首先,需要将POSIX类包装在一个括号内的表达式中。要完全匹配所有这些子字符串,您需要修改正则表达式以考虑所有空格

[[:blank:]]*\\([[:blank:]]*altern[ao][[:blank:]]*\\)[[:blank:]]*
[ \\t]*\\([ \\t]*altern[ao][ \\t]*\\)[ \\t]*
在我看来,因为[:blank:]匹配空格和制表符,而没有区域设置的更改,所以如果您想实际匹配整个子字符串和前面/后面的空格,我会这样写

[[:blank:]]*\\([[:blank:]]*altern[ao][[:blank:]]*\\)[[:blank:]]*
[ \\t]*\\([ \\t]*altern[ao][ \\t]*\\)[ \\t]*
但是,对于您给定的输入,我只想:

gsub('[^a-z]+', '', a)
# [1] "xyz" "jqk" "abc" "def" "mno" "pqr"

首先,需要将POSIX类包装在一个括号内的表达式中。要完全匹配所有这些子字符串,您需要修改正则表达式以考虑所有空格

[[:blank:]]*\\([[:blank:]]*altern[ao][[:blank:]]*\\)[[:blank:]]*
[ \\t]*\\([ \\t]*altern[ao][ \\t]*\\)[ \\t]*
在我看来,因为[:blank:]匹配空格和制表符,而没有区域设置的更改,所以如果您想实际匹配整个子字符串和前面/后面的空格,我会这样写

[[:blank:]]*\\([[:blank:]]*altern[ao][[:blank:]]*\\)[[:blank:]]*
[ \\t]*\\([ \\t]*altern[ao][ \\t]*\\)[ \\t]*
但是,对于您给定的输入,我只想:

gsub('[^a-z]+', '', a)
# [1] "xyz" "jqk" "abc" "def" "mno" "pqr"

谢谢@akrun。我太专注于alterno | a了,错过了弦的整个结构。。。你让我恢复了单纯。我注意到gsub也可以工作,有什么理由我应该使用其中一个吗?@PavoDive没有必要将gsub作为子系统工作得很好。谢谢@akrun。我太专注于alterno | a了,错过了弦的整个结构。。。你让我恢复了单纯。我注意到gsub也可以工作,有什么理由我应该使用其中一个吗?@PavoDive没有必要将gsub作为子工作。