C# 在关键字出现的位置获取块

C# 在关键字出现的位置获取块,c#,.net,regex,C#,.net,Regex,我需要得到关于变量的信息,我只有变量名。在本例中,假设我需要获取属于某个大变量的块(每个chunck以开始,以结束) 换句话说如何获取区块…一些大变量… 注意:我不想有。。。。。一些大变量 临时雇员 fo0 呜呜呜呜 kjfsd 食品KJDSF 千焦 某些变量 一些大变量 到目前为止,我已经尝试: <0>[\s\S]*?SOME_LARGE_VARIABLE[\s\S]*?<0> [\s\s]*?一些大变量[\s\s]*? 这会找到然后继续,直到找到某个大变量并停

我需要得到关于变量的信息,我只有变量名。在本例中,假设我需要获取属于某个大变量的块(每个chunck以
开始,以
结束)

换句话说如何获取区块
…一些大变量…

注意:我不想有
。。。。。一些大变量


临时雇员
fo0
呜呜呜呜
kjfsd
食品KJDSF
千焦
某些变量
一些大变量
到目前为止,我已经尝试:

<0>[\s\S]*?SOME_LARGE_VARIABLE[\s\S]*?<0>
[\s\s]*?一些大变量[\s\s]*?
这会找到然后继续,直到找到某个大变量并停止,直到

请注意,将选择所有内容

我的临时解决办法是:

[\s\s]{1,25}一些大变量[\s\s]*

这将选择限制为少于25个字符。我认为这太冒险了,因为可能会有两个小于25个字符的Chunck


编辑 换句话说,我想以以下方式结束:

<0>
   SOME_LARGE_VARIABLE
<0>

一些大变量

我唯一拥有的是
一些大变量
,知道每一个块都以

开始和结束,而不是使用
*?
你可以使用
(?:(!)*
,就像这样:

<0>(?:(?!<0>).)*SOME_LARGE_VARIABLE(?:(?!<0>).)*<0>
(?s)<0>(?:(?!<0>).)*SOME_LARGE_VARIABLE(?:(?!<0>).)*(?=<0>)
因为第二个
由表达式使用,不允许它匹配。(拆分方法没有这个问题。)

您可以通过使用前瞻tho修复此问题:

<0>(?:(?!<0>).)*SOME_LARGE_VARIABLE(?:(?!<0>).)*(?=<0>)

这就是我使用它的原因,因为有多行:
(?:(?!)[\S\S])*一些较大的变量(?:(?!)[\S\S])*(?=)
@TonoNam,不要使用
[\S]
,使用
(?)
。当我尝试你的模式时,它不起作用。我不得不用
[\s\s]
替换
,谢谢!我会尽快接受你的回答,让我们谈谈。
<0>(?:(?!<0>).)*SOME_LARGE_VARIABLE(?:(?!<0>).)*(?=<0>)
(?s)<0>(?:(?!<0>).)*SOME_LARGE_VARIABLE(?:(?!<0>).)*(?=<0>)