如何找到所有在“ ##”和“ \ n”或“ {”之间的子字符串?
例如,面对“ ## Test \ n”或“ ## Test {”,我想找回“ Test”。
我没有使用Regex的经验,但是开始尝试
str_match("## Test\n", "## (.*?) \n")
使用stringr-package。但似乎换行符存在问题。
答案 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])*