如何基于大括号匹配(开始和结束)拆分以下数据使用C#或REGEX [英] How to split following data based on matches of curly bracket (start and over) USING C# or REGEX

查看:102
本文介绍了如何基于大括号匹配(开始和结束)拆分以下数据使用C#或REGEX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<div class="form-group form-col-2">
	{{<div class="form-group-inline">
		<label>{{ABCDEF}}</label>
		<div class="inpt">
		{{??DropList??}}
			
		{{??DropList??}}
		</div>
	</div>}}                                        
</div>
<div class="form-group form-col-2">
	{{<div class="form-group-inline">
		<label>{{DEFGHI}}</label>
		<div class="inpt">
		{{??DropList??}}
			
		{{??DropList??}}
		</div>
	</div>}}                                        
</div>





我尝试了什么:



i只需按照以下内容

1)



What I have tried:

i just need as follws
1)

{{<div class="form-group-inline">
		<label>{{ABCDEF}}</label>
		<div class="inpt">
		{{??DropList??}}
			
		{{??DropList??}}
		</div>
	</div>}} 



2)


2)

{{ABCDEF}}



3)


3)

{{??DropList??}}



4)


4)

{{??DropList??}}

推荐答案

引用:

如何基于大括号匹配(开始和结束)拆分以下数据使用C#或REGEX

How to split following data based on matches of curly bracket (start and over) USING C# or REGEX



为了使用regEx执行此操作,您需要使用支持递归模式的RegEx包

递归正则表达式教程 [ ^ ]

正则表达式递归 [ ^ ]

用Regul捕获表达式递归和子例程 [ ^ ]



只是一些有趣的链接,可帮助构建和调试RegEx。

以下是RegEx文档的链接:

perlre - perldoc.perl.org [ ^ ]

以下是帮助构建RegEx并调试它们的工具的链接:

< a href =http://regexstorm.net/tester> .NET正则表达式测试程序 - 正则表达式风暴 [ ^ ]

Expresso正则表达式工具 [ ^ ]

RegExr:Learn,Build,&测试RegEx [ ^ ]

此节目RegEx是一个很好的图表,它非常有助于理解RegEx的作用:

Debuggex:在线可视正则表达式测试器。 JavaScript,Python和PCRE。 [ ^ ]


In order to do this with regEx, you need to use a RegEx package that support recursive patterns.
Recursive Regex—Tutorial[^]
Regular Expression Recursion[^]
Capturing with Regular Expression Recursion and Subroutines[^]

Just a few interesting links to help building and debugging RegEx.
Here is a link to RegEx documentation:
perlre - perldoc.perl.org[^]
Here is links to tools to help build RegEx and debug them:
.NET Regex Tester - Regex Storm[^]
Expresso Regular Expression Tool[^]
RegExr: Learn, Build, & Test RegEx[^]
This one show you the RegEx as a nice graph which is really helpful to understand what is doing a RegEx:
Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.[^]


这可能不是一个很好的解决方案,但它符合您的要求,正则表达式不在这里使用



This may not be an excellent solution but it matches your demand, Regex is not used here

string file = @"D:\Projects\CPTemp\CPTemp\TextFile1.txt";
           string data = File.ReadAllText(file);
          var parts=  data.Split( new string[] {"{{<div "} , System.StringSplitOptions.None);
          foreach (string item in parts)
          {
              string result1 = "{{<div " + item;
              if (result1.Contains("</div>}} "))
              {
                  result1 = result1.Substring(0, result1.IndexOf("</div>}}"));
                  result1 += "</div>}}";
                  /*{{<div class="form-group-inline">
                       <label>{{ABCDEF}}</label>
                       <div class="inpt">
                       {{??DropList??}}

                       {{??DropList??}}
                       </div>
                   </div>}} */

                  string result2 = result1;
                  result2 = result2.Substring(result2.IndexOf("<label>") + 7, (result2.IndexOf("</label>") - result2.IndexOf("<label>") - 7));  // {{ABCDEF}}

                  string result3 = result1;
                  result3 = result3.Substring(result3.IndexOf("<div class=\"inpt\">") + 18 ,result3.IndexOf("</div>") -result3.IndexOf("<div class=\"inpt\">") -18   );
                  result3 = result3.Trim();
                  var partsLast = result3.Split('\n').Where(k => !string.IsNullOrWhiteSpace(k.Trim())).ToArray();

                  result3 = partsLast[0].Trim();  //{{??DropList??}}

                  string result4 = partsLast[1].Trim(); //{{??DropList??}}


              }
          }


这篇关于如何基于大括号匹配(开始和结束)拆分以下数据使用C#或REGEX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆