如何找到所有子字符串,它们在两个字符串之间,包括使用R的换行符?

时间:2018-12-18 22:30:59

标签: r regex stringr

如何找到所有在“ ##”和“ \ n”或“ {”之间的子字符串?

例如,面对“ ## Test \ n”或“ ## Test {”,我想找回“ Test”。

我没有使用Regex的经验,但是开始尝试

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

使用stringr-package。但似乎换行符存在问题。

2 个答案:

答案 0 :(得分:2)

以下方法应该起作用:

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

##匹配##

\s*匹配任意数量的空白字符

([^\n{]*)将匹配并捕获任何非\n{的字符

[\n{]\n{

处结束模式

答案 1 :(得分:0)

您可以使用断言和否定的类。
\r回车符放入班级将解决换行问题。

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

它所匹配的就是您所需要的。

扩展

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

此外,如果您预计##不会被换行符或{,
并且有效,请使用类似

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