使用正则表达式删除(复杂的?)字符串模式

时间:2013-06-29 13:46:05

标签: regex r gsub

我尝试找到类似的问题,并自己制定解决方案。但是,我不是很满意,因此决定在这里提出这个问题。

目的: 我想使用{{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”。

2 个答案:

答案 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, ')', "" )

第二个。