C# 正则表达式群
如何将字符串转换为组 字符串:C# 正则表达式群,c#,regex,C#,Regex,如何将字符串转换为组 字符串: TableStart:Name="valueName";ClassName="valueClassName";MasterDatasource="valueMasterDatasource";Condition="valueCondition";ConditionParams="valueConditionParams";OrderBy="valueOrderBy" 输出组: Name = "valueName" ClassName = "valueClassN
TableStart:Name="valueName";ClassName="valueClassName";MasterDatasource="valueMasterDatasource";Condition="valueCondition";ConditionParams="valueConditionParams";OrderBy="valueOrderBy"
输出组:
Name = "valueName"
ClassName = "valueClassName"
MasterDatasource = "valueMasterDatasource"
Condition = "valueCondition"
ConditionParams = "valueConditionParams"
OrderBy = "valueOrderBy"
正则表达式
TableStart:Name=(?<Name>".*");ClassName=(?<ClassName>".*");MasterDatasource=(?<MasterDatasource>".*");Condition=(?<Condition>".*");ConditionParams=(?<ConditionParams>".*");OrderBy=(?<OrderBy>".*")
尝试使用以下代码段:
var s = "TableStart:Name=\"valueName\";ClassName=\"valueClassName\";MasterDatasource=\"valueMas" +
"terDatasource\";Condition=\"valueCondition\";ConditionParams=\"valueConditionParams\"" +
";OrderBy=\"valueOrderBy\"";
var reg = new Regex("TableStart:Name=(?<Name>\".*\");ClassName=(?<ClassName>\".*\");MasterDatasource=(?<Ma" +
"sterDatasource>\".*\");Condition=(?<Condition>\".*\");ConditionParams=(?<ConditionPa" +
"rams>\".*\");OrderBy=(?<OrderBy>\".*\")");
Match match = reg.Match(s);
GroupCollection groups = match.Groups;
for (int i = 1; i < groups.Count; i++)
{
Console.WriteLine("{0} = {1}", reg.GroupNameFromNumber(i), groups[i].Value);
}
编辑:或者您可以使用更简洁、更短的regexp
var reg = new Regex("\\w+\\=\"\\w+\"");
foreach (Match match in reg.Matches(s))
{
var values = match.Value.Split('=');
Console.WriteLine ("{0} = {1}",values[0], values[1]);
}
打印相同的内容。无正则表达式的替代方案:
string input = "TableStart:Name=\"valueName\";ClassName=\"valueClassName\";MasterDatasource=\"valueMasterDatasource\";Condition=\"valueCondition\";ConditionParams=\"valueConditionParams\";OrderBy=\"valueOrderBy\"";
input = input.Replace("TableStart:", "");
string[] nameValues = input.Split(';');
foreach (string nameValue in nameValues){
string[] couple = nameValue.Split('=');
string name = couple[0];
string value = couple[1].Trim('"');
Console.WriteLine("{0} = {1}", name, value);
}
你的问题在哪里?你的正则表达式看起来很好,它在做什么?
string input = "TableStart:Name=\"valueName\";ClassName=\"valueClassName\";MasterDatasource=\"valueMasterDatasource\";Condition=\"valueCondition\";ConditionParams=\"valueConditionParams\";OrderBy=\"valueOrderBy\"";
input = input.Replace("TableStart:", "");
string[] nameValues = input.Split(';');
foreach (string nameValue in nameValues){
string[] couple = nameValue.Split('=');
string name = couple[0];
string value = couple[1].Trim('"');
Console.WriteLine("{0} = {1}", name, value);
}