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

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

猜你喜欢

转载自blog.csdn.net/u013096666/article/details/78603744