希望在最后一个空格上分割一个字符串,并在它之后分隔一个连字符

时间:2015-10-31 17:37:18

标签: regex r

我希望将一个字段分成三个字段:一个有城市,两个有两个不同的数字。数据看起来像这样:

"Mt. Fuji 8-12"
"Taj Majal 10-03"    
"Ur"    
"Nairobi 04"

我想按如下方式拆分此字段(|表示字段之间的分隔):

"Mt. Fuji"  | 8    | 12
"Taj Majal" | 10   | 03
"Ur"        | ""   | ""
"Nairobi"   | "04" | ""

由于这是在R中完成的,我也可以接受Perl正则表达式。

1 个答案:

答案 0 :(得分:2)

你可以这样做,

> x <- "Mt. Fuji 8-12"
> strsplit(x, "[\\s-](?=\\d)", perl=TRUE)
[[1]]
[1] "Mt. Fuji" "8"        "12" 
仅当[\\s-]后跟数字字符时,

(?=\\d)才会匹配空格字符或连字符。 (?=\\d)肯定前瞻断言,断言匹配即[\s-]必须后跟数字字符。

正如@richard建议的那样..

stringi::stri_split_regex(x, "[\\s-](?=\\d)", simplify = TRUE)