更新时间:2023-02-18 14:53:04
如何基于大括号匹配(开始和结束)拆分以下数据使用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并调试它们的工具的链接:
.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??}}
}
}