我之前问过类似的问题,但这个问题更加具体,需要不同的解决方案,所以希望可以发表。我需要在文本中只保留撇号和连字符(删除所有其他标点符号)。例如,我想从str1获取str2:
str1<-"I'm dash before word -word, dash &%$,. in-between word, two before word --word just dashes ------, between words word - word"
str2<-"I'm dash before word word dash in-between word two before word word just dashes between words word word"
目前的解决方案首先移除单词之间的破折号:
gsub(" - ", " ", str1)
然后保留字母、数字和剩余破折号:
gsub("[^[:alnum:]['-]", " ", str1)
问题是,它不能移除连续的破折号,例如“—”以及单词开头和结尾的破折号:“-word”或“word—”
'-+|-+'
表示 "一个空格后跟随1个或多个破折号,或者1个或多个破折号后跟随一个空格"。 - eddigsub
来消除单词之间剩余的多个破折号:gsub('-+', '-', above_result)
。 - eddi