【发布时间】:2021-09-19 15:08:50
【问题描述】:
在下面的字符串中
test_string = "This is a te<8239154>st str<ass31>ing."
我想用空字符串替换所有出现的<xxx> 形式。
我知道我可以使用gsub("<8239154>", "", "test_string "),但这不能动态应用于比较符号之间的任何字符串。我怎样才能做到这一点?
【问题讨论】:
在下面的字符串中
test_string = "This is a te<8239154>st str<ass31>ing."
我想用空字符串替换所有出现的<xxx> 形式。
我知道我可以使用gsub("<8239154>", "", "test_string "),但这不能动态应用于比较符号之间的任何字符串。我怎样才能做到这一点?
【问题讨论】:
你可以使用
gsub("<[^>]*>", "", test_string)
gsub("<[^<>]*>", "", test_string)
<[^>]*> 正则表达式匹配<,然后匹配除> 之外的任何零个或多个字符,然后匹配> 字符。 <[^<>]*> 模式类似,只是它不允许 < 在 < 和 > 之间(这可以方便地删除 innermost 出现的 < 和 >) .
请注意,如果您只需要删除包含 < 和 > 符号的单词字符,您可以使用更具体的解决方案,即
gsub("<\\w+>", "", test_string)
\w+ 匹配一个或多个字母、数字或下划线。见this regex demo。
【讨论】: