我的正则表达式为it\(((.|\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]
答案 0 :(得分:1)
您可以尝试:
it\([^\[]+?\[8032\]['\"]
如下所示: https://regex101.com/r/G95JCw/1/
[^\[]+
告诉正则表达式匹配除<[> 以外的所有字符,直到达到所需的[8032]-这样就解决了有关也选择了先前文本的问题。
最后的['\"]
仅用于选择异步之前的最后一个引号。这部分不是必需的,但是它使提取更容易:)
答案 1 :(得分:0)
您需要对(?!it)
和(.|\n)+?
进行否定的前瞻,以便它拒绝包含it
文本的较大匹配项,因此您需要使用此正则表达式,
it\((((?!it\(')(.|\n))+?)\[8032\]
在您自己的正则表达式中,我唯一要做的就是添加此(?!it)
,以确保所选字符串中不包含it
。