用R中的regexp替换精确字符串匹配
我有一个需要清理的字符串向量。 我已经能够自己清理很多了,但有一点我有问题 有些弦有链子“@56;”开始时(数字不同)。所以一个字符串可以是'@56;裤子"或"897";;裤子 我想让它像“裤子”一样 我编写了以下代码:用R中的regexp替换精确字符串匹配,regex,r,replace,gsub,Regex,R,Replace,Gsub,我有一个需要清理的字符串向量。 我已经能够自己清理很多了,但有一点我有问题 有些弦有链子“@56;”开始时(数字不同)。所以一个字符串可以是'@56;裤子"或"897";;裤子 我想让它像“裤子”一样 我编写了以下代码: gsub("[@[:digit:];]", "", 'mystring') 但它在以下情况下失败: gsub("[@[:digit:];]", "", '@34skirt') # returns 'skirt' 我希望它在本例中返回“@34shirt”,因为;从结尾就
gsub("[@[:digit:];]", "", 'mystring')
但它在以下情况下失败:
gsub("[@[:digit:];]", "", '@34skirt') # returns 'skirt'
我希望它在本例中返回“@34shirt”,因为;从结尾就不见了
我想要一个完全匹配的。有什么办法吗?
我尝试添加\但它不起作用,
[@[:digit:];]
正则表达式与单个字符匹配,该字符要么是@
,要么是数字,要么是代码>。因此,它将删除字符串中任何位置的那些,删除次数与使用gsub
找到它们的次数相同
可以使用正则表达式定义要删除的字符序列,而不是字符类:
@[0-9]+;
见
您甚至可以告诉正则表达式引擎仅删除字符串开头的内容:
^@[0-9]+;
:
[@[:digit:];]
正则表达式匹配单个字符,该字符可以是@
,也可以是数字或代码>。因此,它将删除字符串中任何位置的那些,删除次数与使用gsub
找到它们的次数相同
可以使用正则表达式定义要删除的字符序列,而不是字符类:
@[0-9]+;
见
您甚至可以告诉正则表达式引擎仅删除字符串开头的内容:
^@[0-9]+;
:
我们可以试试
sub("@\\d+;", "", v1)
#[1] "mystring" "@34skirt" "trousers" "trousers"
数据
v1我们可以试试
sub("@\\d+;", "", v1)
#[1] "mystring" "@34skirt" "trousers" "trousers"
数据
v1