删除尖括号之间的所有子字符串

Remove all substrings between angle brackets

在下面的字符串中

test_string = "This is a te<8239154>st str<ass31>ing."

我想用空字符串替换所有出现的 <xxx> 形式。

我知道我可以使用 gsub("<8239154>", "", "test_string ") 但这不能动态应用于比较符号之间的任何字符串。我怎样才能做到这一点?

您可以使用

gsub("<[^>]*>", "", test_string)
gsub("<[^<>]*>", "", test_string)

<[^>]*> 正则表达式匹配 <,然后匹配 > 以外的任何零个或多个字符,然后匹配 > 字符。 <[^<>]*> 模式类似,只是它不允许 <<> 之间(这可以方便地删除 innermost 出现 <>).

参见 this regex demo

请注意,如果您只需要删除用 <> 符号括起来的字符,您可以使用更具体的解决方案,即

gsub("<\w+>", "", test_string)

其中 \w+ 匹配一个或多个字母、数字或下划线。参见 this regex demo