假设我的文字格式如下(四个空格是一个标签):
__spiritual_bouquet_1 _type_of __sympathy_card_1
我想通过标签将其拆分为:
__spiritual_bouquet_1
,_type_of
,__sympathy_card_1
我不知道如何使用正则表达式来分割它。
答案 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]] != ""]