用于匹配数据类型和精度的正则表达式

Regex for Match DataType and Precision

假设我们有以下字符串:

NUMBER
NUMBER(10)

我需要一个匹配这些字符串的正则表达式:

NUMBER      => Group(0) = NUMBER
NUMBER(10)  => Group(0) = NUMBER, Group(1) = 10

下面的表达式就是这样做的,但对我来说有点难看:

([^[\]]+)\(([^)]+)\)|([^[\]]+)

转换为 21 个步骤。 由于我不是正则表达式专家,有人可以帮助我改进此表达式以使其更快吗?

这看起来更简单:

([^(]+)(?:\((.+?)\))?

Regex101 说 "NUMBER" 有 6 个步骤,"NUMBER(10)" 有 13 个步骤。

您可以考虑在开头添加 ^ 并在结尾添加 $ 以更加严格,在这种情况下,每个输入示例的步数增加 2。