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

Regex match non-greedy with optional end

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

我正在尝试提取 3 个东西。 TYPENAMEPOSITION。该位置是可选的。名称可以有括号。 我尝试了很多 REGEX 但无法弄清楚如何做到非贪婪但仍然包含名称的括号。

这些应该是我的最后一组

第一个不匹配:
(?<TYPE>.*?):\s*(?<NAME>[^(]*)\s*(?:\((?<POSITION>.*?)\))?

这个太贪心了,我不摘仓了:
(?<TYPE>.*?):\s*(?<NAME>.*)\s*(?:\((?<POSITION>.*?)\))?

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

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

RegEx Demo

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