Как я могу найти все подстроки, которые находятся между двумя строками, включая разрыв строки, используя R? - PullRequest
0 голосов
/ 19 декабря 2018

Как мне найти все подстроки, которые находятся между "##" и "\ n" или "{"?

Например, перед "## Test \ n" или "## Test {", Я хотел бы вернуться к" Test ".

Я не имел опыта использования Regex, но начал пытаться

str_match("## Test\n", "## (.*?) \n")

с использованием пакета stringr. Но, похоже, что естьпроблема с разрывом строки.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете использовать утверждение и отрицательный класс.
Помещение возврата класса \r в класс позаботится о проблемах разрыва строки.

(?<=##)[^\r\n{]*

Что вам нужно, это то, что вам нужно.

Expanded

 (?<= \#\# )
 [^\r\n{]* 

Кроме того, если вы ожидаете, что ## не разделен переносами строк или {,
и допустимо, используйте что-то вроде

(?<=##)(?:(?!##|[\r\n{])[\S\s])*

0 голосов
/ 19 декабря 2018

Должно работать следующее:

str_match("## Test\n", "##\s*([^\n{]*)[\n{]")

## соответствует ##

\s* соответствует любому количеству пробельных символов

([^\n{]*) будет соответствовать изахватить любое количество символов, которые не \n или {

[\n{], заканчивает шаблон либо \n, либо {

...