Регулярное выражение для соответствия между двоеточием и последним символом новой строки перед следующим двоеточием - PullRequest
2 голосов
/ 21 мая 2019

Я пытаюсь проанализировать строку с помощью регулярного выражения, чтобы извлечь информацию между двоеточием и последним символом новой строки перед следующим двоеточием. Как я могу это сделать?

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 Ответ

3 голосов
/ 22 мая 2019

Я не уверен, что это то, что вам нужно, поскольку желаемый результат выглядит немного иначе.

:((?:.*\\n?)+?)(?=.*:|$)
  • : соответствует двоеточию
  • ((?:.*\n?)+?) совпадение и захват лениво любые строки (по желанию \n)
  • (?=.*:|$) пока не будет строки с двоеточием впереди

См. Эту демонстрацию на regex101

...