在R中,如何使用正则表达式来分割字符串?

时间:2014-06-25 09:44:00

标签: regex r

假设我的文字格式如下(四个空格是一个标签):

__spiritual_bouquet_1    _type_of    __sympathy_card_1

我想通过标签将其拆分为:

__spiritual_bouquet_1_type_of__sympathy_card_1

我不知道如何使用正则表达式来分割它。

2 个答案:

答案 0 :(得分:1)

使用此:

strsplit(subject, "\\s", perl=TRUE);

<强>解释

\s匹配空格字符,表示空格,制表符和回车符。我没有使用制表符\t,因为在示例字符串中我只找到了一个常规空格字符。

选项2:摆脱额外的下划线

我注意到你的一些令牌在分隔符附近有双下划线。如果要删除额外的下划线,可以使用此正则表达式:\s(?:_(?=_))?

在R:strsplit(subject, "\\s(?:_(?=_))?", perl=TRUE);

the demo上,您可以看到我们如何仅匹配加倍的下划线。我们拆分了这个分隔符。

这个如何运作:

  • \\s匹配空格字符
  • (?:_(?=_))?是一个非捕获组,最后由?设置为可选的,与下划线匹配,但只有在前瞻(?=_)能够声明以下内容时字符是下划线

<强>参考

答案 1 :(得分:1)

temp <- "__spiritual_bouquet_1    _type_of    __sympathy_card_1"
strsplit(temp, " ")[[1]]

这会给你一些额外的空结果。所以你可以做另外的事情

strsplit(temp, " ")[[1]][strsplit(temp, " ")[[1]] != ""]