我想解析給定的字符串,這是一種用/
分隔的路徑。我需要編寫正則表達式,將路徑中的每個段匹配到相應的正則表達式組。與可選匹配組的正則表達式
實施例1:
輸入:
/EAN/SomeBrand/appliances/refrigerators/RF444
輸出:
Group: producer, Value: SomeBrand Group: category, Value: appliances Group: subcategory, Value: refrigerators Group: product, Value: RF4441
實施例2:
輸入:
/EAN/SomeBrand/appliances
輸出:
Group: producer, Value: SomeBrand Group: category, Value: appliances Group: subcategory, Value: Group: product, Value:
我嘗試下面的代碼,它工作正常時,路徑是滿的(像在第一〔實施例),但未能找到當輸入字符串不偏不倚時(如例2)。
static void Main()
{
var pattern = @"^" + @"/EAN"
+ @"/" + @"(?<producer>.+)"
+ @"/" + @"(?<category>.+)"
+ @"/" + @"(?<subcategory>.+)"
+ @"/" + @"(?<product>.+)?"
+ @"$";
var rgx = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
var result = rgx.Match(@"/EAN/SomeBrand/appliances/refrigerators/RF444");
foreach (string groupName in rgx.GetGroupNames())
{
Console.WriteLine(
"Group: {0}, Value: {1}",
groupName,
result.Groups[groupName].Value);
}
Console.ReadLine();
}
任何建議是值得歡迎的。不幸的是,我不能簡單地拆分字符串,因爲我使用的框架期望正則表達式對象。
這是否意味着您的所有零件(包括'producer'和'category')都是可選的? –