我尝试找到类似的问题,并自己制定解决方案。但是,我不是很满意,因此决定在这里提出这个问题。
目的:
我想使用{{1}删除出现在字符串开头和结尾的一些表达式(“c(\”和 \“a \”) }和regular expressions
。
gsub
问题1:如何在遇到尾部反斜杠问题的情况下删除剩余的反斜杠?我不能使用#test strings 1 and 2
string1<- "c(\"can't remember the last time\" \"\\a\")"
string2<- "c(\"can't remember the last time\" \"a\")"
#Attempted solution for string1
string1<- gsub("^.\\(","",string1)
string1<- gsub("\\\\.","",string1)
#Result
string1
> "\"can't remember the last time\" \"\")"
,因为它也会删除其他标点符号。
[[:punct:]]
问题2:如何删除'a \'表达式和剩余的反斜杠?
PS。通过使用Java将数据从Word文档的表导出到文本文件,然后将文本文件导入#Attempted solution for string2
string2<- gsub("^.\\(","",string2)
string2<- gsub(".\\{1}","",string2)
#Result
string2
> "\"can't remember the last time\" \"a\")"
,获取字符串。但我只是想看看如何使用R
来清理这个混乱,而不是找到导出数据的Java程序的一些问题。
感谢。
修改 抱歉没有提出问题。这就是我想要的最后一句话:
regular expressions
第二-修改
奇怪字符串的故事:上面显示的字符串是从我使用"can't remember the last time"
包构建的语料库中选择的,带有tm
命令。原始文本以表格形式保存在MS Word中。我使用Java导出它为每个字符串创建文本文件,并将它们导入到R.
如果有帮助,输入如下
DirSource
我可以在上面的代码中看到“c(”和“\ a”。
答案 0 :(得分:3)
如果所有字符串的开头和结尾的两个子字符串都是固定的,则根本不需要正则表达式。只需使用substr
:
substr(string2, 4, nchar(string2) - 6)
如果末尾的子字符串是可变的,但只能包含反斜杠,双引号和a
,那么正则表达式是:
"[\\\\ \"a]*)$"
因此我们可以使用sub
如下:
sub("[\\\\ \"a]*)$", "", substr(string1, 4, nchar(string1)))
答案 1 :(得分:2)
正如@Mark Miller指出的那样,你的问题不是很清楚。但我想那个
library( stringr )
str_replace_all( string1, '\\"', "" )
解决您的第一个问题然后
string2 <- str_replace_all( string2, '\\"a', "" )
str_replace_all( string2, '\\"', "" )
str_replace( str2, ')', "" )
第二个。