在单词和数字之间拆分字符串

bre*_*auv 15 regex r

我有一些类似以下的文字:

foo_text <- c(
  "73000 PARIS   74000 LYON",
  "75 000 MARSEILLE 68483 LILLE",
  "60  MARSEILLE 68483 LILLE"
)
Run Code Online (Sandbox Code Playgroud)

我想在第一个单词之后将每个元素分成两部分。预期输出:

"73000 PARIS" "74000 LYON" "75000 MARSEILLE" "68483 LILLE" "60 MARSEILLE" "68483 LILLE"
Run Code Online (Sandbox Code Playgroud)

请注意,原文中两个元素之间的空格数不一定相同(例如 PARIS 和 74000 之间的空格数与 MARSEILLE 和 68483 之间的空格数不同)。另外,有时第一个数字中有空格(例如 75 000),有时则没有(例如 73000)。

我尝试调整这个答案但没有成功:

(delimitedString = gsub( "^([a-z]+) (.*) ([a-z]+)$", "\\1,\\2", foo_text))
Run Code Online (Sandbox Code Playgroud)

知道该怎么做吗?

Tim*_*sen 13

我们可以在这里尝试使用strsplit如下:

foo_text <- c(
    "73000 PARIS   74000 LYON",
    "75 000 MARSEILLE 68483 LILLE",
    "60  MARSEILLE 68483 LILLE"
)
output <- unlist(strsplit(foo_text, "(?<=[A-Z])\\s+(?=\\d)", perl=TRUE))
output

[1] "73000 PARIS"      "74000 LYON"       "75 000 MARSEILLE" "68483 LILLE"
[5] "60  MARSEILLE"    "68483 LILLE"
Run Code Online (Sandbox Code Playgroud)

这里使用的正则表达式模式表示在以下情况下进行分割:

(?<=[A-Z])  what precedes is an uppercase letter
\\s+        split (and consume) on one or more whitespace characters
(?=\\d)     what follows is a digit
Run Code Online (Sandbox Code Playgroud)