如何使用正则表达式匹配内容

时间:2019-01-18 06:52:43

标签: regex

我的正则表达式为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]

2 个答案:

答案 0 :(得分:1)

您可以尝试:

it\([^\[]+?\[8032\]['\"]

如下所示: https://regex101.com/r/G95JCw/1/

说明-

[^\[]+告诉正则表达式匹配除<[> 以外的所有字符,直到达到所需的[8032]-这样就解决了有关也选择了先前文本的问题。
最后的['\"]仅用于选择异步之前的最后一个引号。这部分不是必需的,但是它使提取更容易:)

答案 1 :(得分:0)

您需要对(?!it)(.|\n)+?进行否定的前瞻,以便它拒绝包含it文本的较大匹配项,因此您需要使用此正则表达式,

it\((((?!it\(')(.|\n))+?)\[8032\]

在您自己的正则表达式中,我唯一要做的就是添加此(?!it),以确保所选字符串中不包含it

Demo