C#正则表达式:匹配字符串指定字符内容

时间:2022-08-20 18:48:47
1 功能需求
  • 匹配字符串
“m1.large(vcpu 2,ram 4G)|c95f5529-47e8-46d4-85da-319eb9905a9b”.
  • 目标字符串
vcpu: “2”,
ram: “4”,
id:“c95f5529-47e8-46d4-85da-319eb9905a9b”.

2 代码实现

using System;
using System.Text.RegularExpressions;

namespace RegexDemo
{
class Program
{
static void Main(string[] args)
{
var flavorRef = "m1.large(vcpu 2,ram 4G)|c95f5529-47e8-46d4-85da-319eb9905a9b";

Regex regex = new Regex(@"(?<= )[^ \,G]+(?=\,|G)|(?<=\|)[^\|]+");
MatchCollection mc = regex.Matches(flavorRef);

var cpu = mc[0].Value; //cpu:2
var ram = mc[1].Value; //ram:4
var id = mc[2].Value; //flavorId:c95f5529-47e8-46d4-85da-319eb9905a9b

Console.WriteLine("cpu:" + cpu + " " + "ram:" + ram + " " + "id:" + id);
Console.ReadKey();
}
}
}


3 正则表达式规范参考

+:匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。

x|y:匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。

[^xyz]:负值字符集合。匹配未包含的任意字符。例如,[^abc]”可以匹配“plain”中的“p”。

(?=pattern):正向肯定预查。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”

(?<=pattern):反向肯定预查。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”


4 附:正则表达式参考手册

http://tool.oschina.net/uploads/apidocs/jquery/regexp.html