Java 改进与行开头的{m,n}{m,}{124;{,n}{n}匹配的正则表达式

Java 改进与行开头的{m,n}{m,}{124;{,n}{n}匹配的正则表达式,java,regex,Java,Regex,需要一个正则表达式,该正则表达式将{m,n}{124;{m,}{124;{,n}{n}(其中m和n是整数)中的任意一个与行首符号之间任意数量的空格相匹配。我想到了这个: ^({\s*\d+\s*,\s*\d+\s*}{\s*,\s*\d+\s*}}{\s*\d+\s*,\s*}{\s*\d+\s*}} 虽然它确实有效,但我很好奇是否有办法把它缩短。谢谢你的意见 更新:Mark提出了一个极好的解决方案: ^\{(\s*\d+\s*(,(\s*\d+\s*)?)?|,\s*\d+\s*)\}您至少应

需要一个正则表达式,该正则表达式将{m,n}{124;{m,}{124;{,n}{n}(其中m和n是整数)中的任意一个与行首符号之间任意数量的空格相匹配。我想到了这个:

^({\s*\d+\s*,\s*\d+\s*}{\s*,\s*\d+\s*}}{\s*\d+\s*,\s*}{\s*\d+\s*}}

虽然它确实有效,但我很好奇是否有办法把它缩短。谢谢你的意见

更新:Mark提出了一个极好的解决方案:
^\{(\s*\d+\s*(,(\s*\d+\s*)?)?|,\s*\d+\s*)\}

您至少应该能够做到这一点(为了简洁起见,暂时忽略空格):

这捕获了第一个备选方案中除{,n}之外的所有情况

将空格添加回:

"^\\{\\s*(\\d+(\\s*,(\\s*\\d+)?)?|,\\s*\\d+)\\s*\\}"

可能看起来不短,但请记住,我正确地避开了Java,而您肯定不是。

首先,它们都以
{\s*
开始,以
\s*}
结束。因此,您至少可以“重构这些:


^{\s*(\d+\s*,\s*\d+|,\s*\d+\d+\s*,|\d+\s*}

是否使用正则表达式匹配正则表达式?是的:)我知道,有点奇怪,但我正在为我正在处理的项目编写一个简化正则表达式语法分析器。您缺少一个结束括号-^{(\d+(,(\d+)),\d+),\d+)。谢谢,这就是我想要的简洁程度:)
"^\\{\\s*(\\d+(\\s*,(\\s*\\d+)?)?|,\\s*\\d+)\\s*\\}"