将VBScript.Regex重写为C#Regex代码
本文关键字:C#Regex 代码 重写 VBScript Regex | 更新日期: 2023-09-27 18:29:27
我有一个用VBScript编写的遗留代码,它使用正则表达式我需要用c#重写这段代码。不幸的是,我无法将带有"Submatches"集合的VBScript RegEx类映射到相应的C#代码。
这是VBScript:RegExp=创建对象("VBScript.RegExp");RegExp.Pattern='某种模式RegExp.IgnoreCase=True;RegExp.Global=真;RegExp.Multinle=True;
Matches=RegExp.Execute(someText);
For Each Match In Matches Do
If Match.SubMatches(4) <> Nothing Then
' some code goes next
问题是:我不知道VBScript的"Submatches"的等效C#Regex方法是什么。
我的C#:
var Regex = new Regex(@"('{'n?)|(""(""""|[^""]*)*"")|([^'},'{]+)|(,'n?)|('}'n?)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
var Matches = Regex.G(textBox1.Text);
var Tree = new SimpleTree<string>();
foreach (var Match in Matches)
{
}
"foreach"循环中的"Match"对象是一个"对象",没有任何"Submatch"成员。如何在C#中实现Submatches?
试试这个:
Regex re = new Regex(@"('{'n?)|(""(""""|[^""]*)*"")|([^'},'{]+)|(,'n?)|('}'n?)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection matches = re.Matches(textBox1.Text);
var Tree = new SimpleTree<string>();
foreach (Match m in matches)
{
if( m.Groups(4).Value != null )
{
// do your stuff here
}
}