正则表达式可选捕获组

Regex Optional Capture Groups

问题是匹配下面的内容

hyundai E&C Hillstate (KOR) - Heungkuk life insurance pink spiders (KOR)

目前,捕获组一直在部分工作,尽管它在

时停止

.*

当前正则表达式为:

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

请假设已忽略大小写。有了上面,它会像这样匹配

第 1 组长度:7 现代

第 2 组长度:3 E&C

第 3 组长度:9 山州

第 4 组长度:0

第 5 组长度:0

如有任何建议,我们将不胜感激。

另一种情况是

  1. hyundai E&C Hillstate (韩) v Heungkuk life insurance pink spiders (韩)
  2. 现代 E&C Hillstate v 兴国人寿粉红蜘蛛
  3. hyundai E&C Hillstate - Heungkuk life insurance pink spiders

问题是,在我这边,我们有像现代 E&C Hillstate v Heungkuk 这样的东西,然后它被分解成碎片。

然后将这些片段与第三方提供的字符串进行比较,例如现代 E&C Hillstate (KOR) - Heungkuk life insurance pink spiders (KOR)。在这种情况下,将注意到它是否匹配。

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

您要查找的似乎是命名捕获组。语法是

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

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

请注意,并非您的所有关键字都包含在以上内容中。

您还可以考虑将 (?<hy>hyundai)|(?<Korea>\(KOR\)) 更改为 (?<hy>hyundai( (?<hy-country>\(KOR\)))?) 以确保 (KOR) 标记不会独立出现。