Cra*_*oot 1 regex string r regex-lookarounds
我有这段代码可以在第二个空间上拆分列,但我不知道如何修改它以仅在第一个空间上拆分。我对正则表达式不太熟悉。
library(tidyr)
df <- data.frame(Location = c("San Jose CA", "Fremont CA", "Santa Clara CA"))
separate(df, Location, into = c("city", "state"), sep = " (?=[^ ]+$)")
# city state
# 1 San Jose CA
# 2 Fremont CA
# 3 Santa Clara CA
Run Code Online (Sandbox Code Playgroud)
您可以使用
library(tidyr)
df <- data.frame(Location = c("San Jose CA", "Fremont CA", "Santa Clara CA"))
df_new <- separate(df, Location, into = c("city", "state"), sep = "^\\S*\\K\\s+")
Run Code Online (Sandbox Code Playgroud)
输出:
> df_new
city state
1 San Jose CA
2 Fremont CA
3 Santa Clara CA
Run Code Online (Sandbox Code Playgroud)
正^\S*\K\s+则表达式匹配
^- 字符串的开头\S*- 零个或多个非空白字符\K- 匹配重置运算符,从整个匹配内存缓冲区中丢弃迄今为止匹配的文本\s+ - 一个或多个空白字符。注意:如果你的字符串可以有前导空格,并且你想忽略这个前导空格,你可以\\s*在后面添加^并使用
sep = "^\\s*\\S+\\K\\s+"
Run Code Online (Sandbox Code Playgroud)
在这里,\S+将要求在分割字符串的空白之前至少存在一个(或多个)非空白字符。