我需要从包含所有段落相同的开头和结尾的段落中提取包含特定字符串的段落
例如:在下面的文字中,所有段落的第一行以“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;
答案 0 :(得分:1)
您可以使用这个基于前瞻性的正则表达式:
/(\bThread ((?!\bBread)[\s\S])*string_to_be_searched((?!\bBread)[\s\S])*Bread.*)/g
((?!\bBread)[\s\S])*
是此处的关键字,表示匹配0个或更多字符(包括换行符),后面没有其他Bread
模式(您的结束块)。