Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将内容与regex匹配_Regex - Fatal编程技术网

如何将内容与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\]
让我也更新我的答案。是的,谢谢,它现在工作得很好,但还有一些类似“,”