C# 用于嵌套括号的正则表达式 简明的
我有以下案文: [atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b 我的匹配项应如下所示:C# 用于嵌套括号的正则表达式 简明的,c#,regex,C#,Regex,我有以下案文: [atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b 我的匹配项应如下所示: [asdasdosy] [ewrdtr] 我的尝试 我曾尝试自己制作,但结果是: [atdSd[ASDASDASY] [ewrdtr] 我使用以下表达式: \[\S+<(\d+)REGEH(\d+)>\S+\] \[\S+\S+\] 细节 条件是: 比赛中不能有空格 在匹配中必须有[(ASCII符号)(ASCII符号)] 如果有嵌套括号,则需要匹配最
[asdasdosy]
[ewrdtr]
[atdSd[ASDASDASY]
[ewrdtr]
\[\S+<(\d+)REGEH(\d+)>\S+\]
\[\S+\S+\]
细节
条件是:
- 比赛中不能有空格
- 在匹配中必须有[(ASCII符号)(ASCII符号)]
- 如果有嵌套括号,则需要匹配最里面的括号。
应匹配[asdSd[ASDASDUSD]
[ASDASDUSD]
\[^\s\[]+[[^\s\[]+\]
基本上将\S
替换为[^\S\[]
,即非whitepsace字符的否定字符类匹配,关键是非[
var st=“[atdSd[ASDASDASY]***oopprefs[ewrdtr]pppp555b”;
列表结果=新列表
(Regex.Matches(st,@“\[^[]+REGEH.*?\]”)
.Cast()
.选择(x=>x.Value)
.ToList());
//[asdasdosy][ewrdtr]
非常感谢你的问题,如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明你已经找到了解决方案并给回答者和你自己带来了一些声誉。没有义务这么做。
var st = "[atdSd[asdasd<4REGEH22>asdosy] ***oopprefs[ew<16REGEH30>rdtr]pppp555b";
List<string> result = new List<string>
(Regex.Matches(st, @"\[[^[]+REGEH.*?\]")
.Cast<Match>()
.Select(x => x.Value)
.ToList());
// [asdasd<4REGEH22>asdosy] [ew<16REGEH30>rdtr]