假设我们有以下字符串:
NUMBER
NUMBER(10)
我需要一个与这些字符串匹配的正则表达式:
NUMBER => Group(0) = NUMBER
NUMBER(10) => Group(0) = NUMBER, Group(1) = 10
以下表达式可以做到这一点,但对我来说似乎有点难看:
([^[\]]+)\(([^)]+)\)|([^[\]]+)
这被翻译成21步。 由于我不是正则表达式专家,有人可以帮助我改进这个表达式以使其更快吗?
答案 0 :(得分:1)
这似乎更简单:
([^(]+)(?:\((.+?)\))?
Regex101说"NUMBER"
有6个步骤,"NUMBER(10)"
有13个步骤。
您可以考虑将^
添加到开头,将$
添加到结尾更严格,在这种情况下,每个输入示例的步数增加2。