我有一个正则表达式:
^lineC:\n\t(.*)
我有一个多行字符串
lineA:
line1
line2
line3
lineB:
line4
line5
line6
lineC:
line7
line8
line9
仅与第7行匹配。但是我需要返回第7行、第8行和第9行。
我可以这样做
^lineC:\n\t(.*)\n\t(.*)\n\t(.*)
但是当然,如果我在lineC下有更多的行,它将不起作用。有什么想法吗?
link with example on regex101.com
Tags:
您可以选择在捕获组1内的第一次匹配后重复换行和制表符,以使所有行都位于组1中
注意
.*
也可以匹配\n\t
后面的空部分^
字符串的开头lineC:\n\t
匹配{(
捕获第1组.*
匹配任意字符0+次(?:\n\t.*)*
可选地重复换行符、制表符和行的其余部分)
关闭组1Regex demo
示例代码
输出
这可能会奏效:
这应该可以做到:
产出:
{}
捕获两个主要组:
(\w+)
和((?:\s+\w+(?:\n|$))*)
所有其他组都设置为非捕获以使
findall
易于使用相关问题 更多 >
编程相关推荐