首页 > 解决方案 > 删除尖括号之间的所有子字符串

问题描述

在以下字符串中

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

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

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

标签: rregexgsub

解决方案


您可以使用

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

<[^>]*>则表达式匹配<,然后匹配任何零个或多个字符>,然后匹配一个>字符。该<[^<>]*>模式是相似的,只是它不允许<<and之间>(这可以很方便地删除and的最里面的出现)。<>

请参阅此正则表达式演示

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

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

where\w+匹配一个或多个字母、数字或下划线。请参阅此正则表达式演示


推荐阅读