从包含所有段落相同的开头和结尾的段落中提取包含特定字符串的段落

时间:2015-03-18 14:34:52

标签: javascript regex

我需要从包含所有段落相同的开头和结尾的段落中提取包含特定字符串的段落

例如:在下面的文字中,所有段落的第一行以“Thread”开头,最后一行以“Breadcrumb”开头,现在我只想提取那些包含“string_to_be_searched”的段落

 Thread 1398 (Thread name)
    data...
    Breadcrumb: some alpha numeric data

  Thread 1398 (Thread name)
    data...
    string_to_be_searched
    Breadcrumb: some alpha numeric data



  Thread 1398 (Thread name)
    data...
    Breadcrumb: some alpha numeric data

 Thread 1398 (Thread name)
    data...
    string_to_be_searched
    Breadcrumb: some alpha numeric data

 Thread 1398 (Thread name)
    data...
    Breadcrumb: some alpha numeric data

我尝试使用正则表达式,但是当我尝试使用不带g选项时,它给我前两个线程,当我用g做它时它给我前4个线程,相反它应该只给我第2和第3个线程。

var re = /(Thread[\s\S]*?sys_mlock[\s\S]*?Bread.*)/m; 

问题演示:https://regex101.com/r/nR3qG9/2

1 个答案:

答案 0 :(得分:1)

您可以使用这个基于前瞻性的正则表达式:

/(\bThread ((?!\bBread)[\s\S])*string_to_be_searched((?!\bBread)[\s\S])*Bread.*)/g

Updated Regex Demo

((?!\bBread)[\s\S])*是此处的关键字,表示匹配0个或更多字符(包括换行符),后面没有其他Bread模式(您的结束块)。