如何在单词匹配之后和其他特定单词之前获得行?

时间:2019-01-22 00:18:50

标签: regex

我有这个字符串:

  

概述

     

有人要求审核

     

标题

     

测试

     

测试

     

决议

我想获得单词“ 概述”之后和单词“ 决议

之前的所有行

我尝试过此正则表达式:Overview.*[\r\n]+(.*)

https://regex101.com/r/QibhMq/1

2 个答案:

答案 0 :(得分:1)

为此,您需要使用修饰符。我建议使用

/ s 单行

Overview.*[\r\n]+(.*)/s

Online Demo

答案 1 :(得分:1)

这似乎有些矫kill过正,但是嵌套的重复组和实际的边界词应该非常健壮:

Overview[\r\n]((?:.*[\r\n].*)*)Resolution

在JS中演示:

const data = `Something
Overview
Somebody request a review
Title
Test
Test
Resolution
Blah
Something`

const after = "Overview"
const before = "Resolution"

const regex = new RegExp(`${after}[\r\n]((?:.*[\r\n].*)*)${before}`)

const match = data.match(regex)
if (match) console.log(match[1])

enter image description here

Regex101的演示和说明:https://regex101.com/r/QibhMq/6