- 匹配字符串
“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();
}
}
}
+:匹配前面的子表达式一次或多次。例如,“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 附:正则表达式参考手册