正则表达式可选捕获组

时间:2017-09-18 07:34:26

标签: c# regex regex-group

问题是匹配下面的内容

  现代E& C Hillstate(KOR) - Heungkuk人寿保险粉红蜘蛛   (KOR)

目前,捕获组已部分正常工作,但在有

时停止
  

*

当前的正则表达式是:

  (hyundai){0,1}\s*(E&C){0,1}\s*(hillstate){0,1}.*(Heungkuk){0,1}.*(invalid){0,1}.*`

请假设忽略案例。有了上面的内容,就会像这样匹配

组#1长度:7 现代

组#2长度:3 È和C

组#3长度:9 Hillstate

组#4长度:0

组#5长度:0

非常感谢任何建议。

另一种情况是

  1. 现代E& C Hillstate(KOR)v Heungkuk人寿保险粉红蜘蛛(KOR)
  2. hyundai E& C Hillstate v Heungkuk life insurance pink spiders
  3. 现代E& C Hillstate - Heungkuk人寿保险粉红蜘蛛
  4. 问题是,在我的最后,我们有像现代E& C Hillstate诉Heungkuk这样的东西,然后将它分解成碎片。

    然后将这些作品与由第三方提供的字符串进行比较,该第三方就像现代E& C Hillstate(KOR) - Heungkuk人寿保险粉红蜘蛛(KOR)。在这种情况下,将注意到它是否匹配。

2 个答案:

答案 0 :(得分:0)

这样的事情: (hyundai){0,1}\s*(E&C){0,1}\s*(hillstate){0,1}\s*(\(KOR\)){0,1}\s*\W\s*(Heungkuk){0,1}(.*)

答案 1 :(得分:-1)

您正在寻找的是被命名的捕获组。语法是

(((?<hy>hyundai)|(?<Korea>\(KOR\))|(?<delimiter>(v|-))|(?<heung>Heungkuk)|(?<invalid>\S+?))(\s+|$))+

然后检查捕获组可以告诉您行中是否包含单词,并将其置于其位置以及捕获它的组的名称。

请注意,并非所有关键字都包含在上面。

您还可以考虑将(?<hy>hyundai)|(?<Korea>\(KOR\))更改为(?<hy>hyundai( (?<hy-country>\(KOR\)))?)以确保(KOR)令牌不会独立发生。