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