TYPE1: Name Potential (parenthesis) (POSITION1)
TYPE2: Name (POSITION2)
TYPE3: Name with no Position
我正在尝试提取3件事。 TYPE
,NAME
,POSITION
。该职位是可选的。名称可以有括号。
我尝试了很多REGEX,但无法弄清楚如何变得非贪婪,但仍然包括名称的括号。
这些应该是我的最后一组
这个与第一个不正确:
(?<TYPE>.*?):\s*(?<NAME>[^(]*)\s*(?:\((?<POSITION>.*?)\))?
这太贪心,我不提取职位:
(?<TYPE>.*?):\s*(?<NAME>.*)\s*(?:\((?<POSITION>.*?)\))?
答案 0 :(得分:1)
您可以将此正则表达式与最后一组一起用作可选匹配项:
^(?<TYPE>[^:]+):\h*(?<NAME>.+?)(?:\h+\((?<POSITION>[^)]+)\))?$
如果您的正则表达式版本不支持\h
(水平空格),请改用[ \t]
。