假设我有一个如下格式的文本(四个空格是一个制表符):
__spiritual_bouquet_1 _type_of __sympathy_card_1
我想把它按制表符拆分为:
__spiritual_bouquet_1
、_type_of
、__sympathy_card_1
我不知道如何使用正则表达式来拆分它。
发布于 2014-06-25 09:46:14
使用以下命令:
strsplit(subject, "\\s", perl=TRUE);
说明
\s
匹配一个空格字符,这意味着空格、制表符和回车。我没有使用制表符\t
,因为在示例字符串中我只找到了一个常规空格字符。
选项2:去掉额外的下划线
我注意到您的一些标记在分隔符附近有双下划线。如果您想删除多余的下划线,可以使用这个正则表达式:\s(?:_(?=_))?
在R:strsplit(subject, "\\s(?:_(?=_))?", perl=TRUE);
在the demo上,您可以看到我们如何只匹配双倍下划线。我们在这个分隔符上拆分。
它是如何工作的:
\\s
匹配空格character(?:_(?=_))?
是一个非捕获组,由末尾的?
设置为可选,它匹配下划线,但前提是先行(?=_)
能够断言下面的字符是下划线参考
发布于 2014-06-25 09:47:44
或
temp <- "__spiritual_bouquet_1 _type_of __sympathy_card_1"
strsplit(temp, " ")[[1]]
这会给你一些额外的空结果。所以你也可以这样做
strsplit(temp, " ")[[1]][strsplit(temp, " ")[[1]] != ""]
https://stackoverflow.com/questions/24405280
复制相似问题