正则表达式用于在冒号和下一个冒号之前的最后一个换行符之间进行匹配

时间:2019-05-21 20:33:59

标签: r regex regex-lookarounds stringr regex-greedy

我正在尝试使用正则表达式解析字符串,以提取冒号和下一个冒号之前的最后一个换行符之间的信息。我该怎么办?

string <- "Name: Al's\nPlace\nCountry:\nState\n/ Province: RI\n"
stringr::str_extract_all(string, "(?<=:)(.*)(?:\\n)")

但是我得到了

[[1]]
[1] " Al's\n" " \n"  " RI\n" 

当我想要的时候:

[[1]]
[1] " Al's\nPlace\n" " \n"  " RI\n" 

1 个答案:

答案 0 :(得分:3)

我不确定这是否是您想要的,因为您想要的输出看起来有些不同。

:((?:.*\\n?)+?)(?=.*:|$)
  • :匹配冒号
  • ((?:.*\n?)+?)匹配并capture lazily任意行(至可选\n
  • (?=.*:|$),直到冒号为ahead的行为止

See this demo at regex101