如何将内容与regex匹配
我的正则表达式是如何将内容与regex匹配,regex,Regex,我的正则表达式是it\((.\124;\ n)+?)\[8032\] 内容如下: it(`some text some text - [208]`, async () => { expect(0).toBe(2); }); it('some text ' + 'some text - [8032]', async () => { expect(1).toBe(0); }); 现在如果我执行正则表达式 我只是想 it('some text ' +
it\((.\124;\ n)+?)\[8032\]
内容如下:
it(`some text
some text - [208]`, async () => {
expect(0).toBe(2);
});
it('some text ' +
'some text - [8032]', async () => {
expect(1).toBe(0);
});
现在如果我执行正则表达式
我只是想
it('some text ' +
'some text - [8032]
但不幸的是,我得到了一个更大的比赛
it(`some text
some text - [208]`, async () => {
expect(0).toBe(2);
});
it('some text ' +
'some text - [8032]
您可以尝试:
it\([^\[]+?\[8032\]['\"]
如图所示:
解释-
[^\[]+
告诉正则表达式匹配除“[”之外的所有字符,直到它达到所需的[8032]——这解决了您关于上一个文本也被选中的问题。['\“]
最后只是选择异步之前的最后一个引号。这一部分不需要,但它使提取变得更容易:)您需要对(?!it)
进行负面展望(.\n)+?
因此它拒绝包含它
文本的较大匹配,因此您需要使用此正则表达式
it\((((?!it\(')(.|\n))+?)\[8032\]
在您自己的正则表达式中,我所做的唯一添加是这个(?!it)
,它确保所选字符串中不包含it
为了清楚起见,您想要方括号内的文本,正好是8032?@CoffeehouseCoder否我想要从它开始到[8032]的完整行。您是正确的,感谢您的努力,但我可能会得到[在正文之间,我也接受第二个答案,但对此投了赞成票。@AjaySuwalka您选择的答案完全是您的决定,但我注意到,如果正文中有
it
,另一个答案将不起作用。这不是比正文中的方括号更有可能吗?您可以看到我在说什么这里:哦,对不起,我明白你的意思,这很糟糕(facepalm),你能给我另一个关于正则表达式的选择吗[在文本中?@AjaySuwalka我正在开发另一个版本,大概15分钟左右就可以准备好:)@AjaySuwalka我想我已经完成了。请检查:我使用了it
text来拒绝匹配,因为根据您的数据,这已经足够了。如果您认为它
可以出现在您想要的文本中,那么我们需要选择一个文本l比it
更大,它应该能够拒绝匹配。因此,您可以在它之后添加(
),并使用这个正则表达式it\((((?!it\()(。|\n))+?)\[8032\]
让我也更新我的答案。是的,谢谢,它现在工作得很好,但还有一些类似“,”