我有以下字符串,其中包含u,c,m,p组: u5684c76431m33290p55030352942b366a1ca6b310 我需要通过以下方式进行分割:
Regex regex = new Regex("regex here");
foreach (Match match in regex.Matches(source))
switch (match.Groups[1].Value.ToLower())
{
case "u":
// u logic here
break;
case "c":
//c logic here
...
有下一个条件:
请帮我制作一个正则表达式。
- 更新:有时候" p" group可以是整数。
答案 0 :(得分:2)
如果您坚持采用正则表达式方法,可以尝试使用此正则表达式:
(?:(?<class>p)(?<value>[A-Za-z0-9]{24})|(?<class>u|c|m)(?<value>[0-9]+))
在C#代码中,它可能类似于:
var rx = new Regex(@"(?:(?<class>p)(?<value>[A-Za-z0-9]{24})|(?<class>u|c|m)(?<value>[0-9]+))", RegexOptions.CultureInvariant| RegexOptions.Compiled);
for (Match m = rx.Match(source); m.Success; m = m.NextMatch())
{
var class = m.Groups["class"].Value;
var value = m.Groups["value"].Value;
}