R Regex:仅删除 > 之后的紧随其后的字符

R Regex: removing only the immediate following character after >

我在 R 中有以下字符串:

string1 = "A((..A>B)A"

我想删除所有标点符号,以及 > 之后的字母,即 >B

这是我想要的输出:

output = "AAA"

我尝试使用 gsub() 如下:

output = gsub("[[:punct:]]","", string1)

但这给出了 AABA,它保留了紧随其后的字符。

这将使用您的工作加上前导回顾首先查找 > 字符之后的内容。

gsub('(?<=>).|[[:punct:]]', '', "A((..A>B)A", perl=TRUE)
## [1] "AAA"

不使用 perl 的稍微不那么复杂的正则表达式似乎也适用于此示例:

gsub("[[:punct:]]|>(.)", "", "A((..A>B)A")
[1] "AAA"

你说

remove all punctation, and the letter immediately after >

标点符号与[[:punct:]]匹配,字母可以与[[:alpha:]]匹配,因此,您可以使用TRE正则表达式gsub:

string1 = "A((..A>B)A"
gsub(">[[:alpha:]]|[[:punct:]]", "", string1)
# => [1] "AAA"

online R demo

请注意,>也是与[[:punct:]]匹配的字符,因此,您不需要在此处进行任何环视,只需将其后跟一个字母删除即可。

图案详情:

  • >[[:alpha:]] - > 和任何字母
  • | - 或
  • [[:punct:]] - 标点符号。