带可选匹配组的正则表达式

我正在尝试解析给定的字符串,该字符串有点与分隔/我需要编写与匹配的正则表达式组路径中的每个段匹配的正则表达式。

范例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();
}

任何建议都欢迎。不幸的是,因为我使用的框架期望使用正则表达式对象,所以我不能简单地拆分字符串。

Xanatos

尝试

var pattern = @"^" + @"/EAN"
    + @"(?:/" + @"(?<producer>[^/]+))?"
    + @"(?:/" + @"(?<category>[^/]+))?"
    + @"(?:/" + @"(?<subcategory>[^/]+))?"
    + @"(?:/" + @"(?<product>[^/]+))?";

注意:我如何替换.[^/],因为你要使用/到拆分字符串。注意每个子部分(?的可选量词用法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与可选第二组匹配的正则表达式

来自分类Dev

检查正则表达式是否与可选组匹配

来自分类Dev

正则表达式可选匹配

来自分类Dev

正则表达式可选匹配

来自分类Dev

正则表达式匹配组

来自分类Dev

正则表达式用于数字匹配,可选带空格和字符?

来自分类Dev

如何在python中使用正则表达式re.sub()可选匹配组?

来自分类Dev

正则表达式匹配可选组,由任何字符分组包围

来自分类Dev

C#-是否可以检查匹配哪个可选正则表达式组?

来自分类Dev

正则表达式匹配和所有可选组

来自分类Dev

带有可选组的Python正则表达式,至少匹配一个

来自分类Dev

正则表达式开头的可选匹配组始终为空

来自分类Dev

正则表达式匹配贪婪,可选,非捕获组

来自分类Dev

正则表达式:将可选字符串匹配到组

来自分类Dev

如何编写简单的正则表达式以匹配可选的中间组?

来自分类Dev

正则表达式匹配可选组,除非其中包含某些内容

来自分类Dev

如何在python中使用正则表达式re.sub()可选匹配组?

来自分类Dev

具有可选捕获组的Javascript正则表达式-匹配mongo查询

来自分类Dev

正则表达式可选,带有两个匹配的组

来自分类Dev

正则表达式:可选但相关的匹配序列(无嵌套组)

来自分类Dev

C#正则表达式匹配地址-标记组可选

来自分类Dev

正则表达式匹配带或不带捕获组的字符串

来自分类Dev

正则表达式用于可选组

来自分类Dev

正则表达式中的可选组

来自分类Dev

正则表达式可选捕获组?

来自分类Dev

可选的正则表达式字符组

来自分类Dev

正则表达式可选组捕获JAVA

来自分类Dev

正则表达式可选部分中的捕获组

来自分类Dev

Java,正则表达式,嵌套可选组

Related 相关文章

热门标签

归档