正则表达式匹配非贪婪与可选结束

时间:2017-04-03 17:43:34

标签: regex regex-negation

TYPE1: Name Potential (parenthesis) (POSITION1)
TYPE2: Name (POSITION2)
TYPE3: Name with no Position

我正在尝试提取3件事。 TYPENAMEPOSITION。该职位是可选的。名称可以有括号。 我尝试了很多REGEX,但无法弄清楚如何变得非贪婪,但仍然包括名称的括号。

这些应该是我的最后一组

  • TYPE1,名称潜力(括号),POSITION1
  • TYPE2,Name,POSITION2
  • TYPE3,名称

这个与第一个不正确:
(?<TYPE>.*?):\s*(?<NAME>[^(]*)\s*(?:\((?<POSITION>.*?)\))?

这太贪心,我不提取职位:
(?<TYPE>.*?):\s*(?<NAME>.*)\s*(?:\((?<POSITION>.*?)\))?

1 个答案:

答案 0 :(得分:1)

您可以将此正则表达式与最后一组一起用作可选匹配项:

^(?<TYPE>[^:]+):\h*(?<NAME>.+?)(?:\h+\((?<POSITION>[^)]+)\))?$

RegEx Demo

如果您的正则表达式版本不支持\h(水平空格),请改用[ \t]