如果我有这种格式的字符串:
string placeholder = "[[Ford:Focus(blue)]]";
或
string placeholder = "[[Ford:Focus(light blue)]]";
我可以用什么正则表达式来填充下面的三个变量?
string make = ?
string model = ?
string colour = ?
有什么想法吗?
谢谢,
答案 0 :(得分:2)
这可以使用正则表达式和组来完成:
string strRegex = @"\[(?<make>\w*):(?<model>\w*)\((?<colour>.*)\)";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strTargetString = @"[[Ford:Focus(blue)]]";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
if (myMatch.Success)
{
var make = myMatch.Groups["make"].Value;
var model = myMatch.Groups["model"].Value;
var colour = myMatch.Groups["colour"].Value;
}
}
答案 1 :(得分:1)
你可以尝试
([^:\[\]]*):([^(]*)\(([^)]*)\)
说明:
([^:\[\]]*)
捕获make(任何不是方括号和:
的内容):
分隔模型([^(]*)
匹配模型\(([^)]*)\)
匹配括号内的颜色(括号括起来的所有内容)答案 2 :(得分:1)
如果您想避免使用RegEx - 使用Split()
string placeholder = "[[Ford:Focus(light blue)]]";
string[] result = placeholder.Split(new[] { '[', ']', '(', ')', ':' }, StringSplitOptions.RemoveEmptyEntries);
string make = result[0];
string model = result[1];
string colour = result[2];
答案 3 :(得分:0)
如果括号是字符串的一部分,您可以使用类似
的内容\[\[(.*):(.*)\((.*)\)