我正在尝试在Java中编写一个正则表达式来匹配看起来像
的字符串(1, 2, 3, 4, 5, 6)
即左括号,后跟非零量的非负整数(用逗号分隔,然后用任意数量的空格分隔),并用右括号结束。
我试过
([0-9]+,\s+)
有谁知道如何编写这样的正则表达式?
答案 0 :(得分:4)
你可以尝试这种模式:
Pattern pattern = Pattern.compile("\\(\\d+(,\\s*\\d+)*\\)");
\\d
:一个数字(0
到9
)
\\s
:空格字符
+
:一次或多次出现
*
:零次或多次出现
请参阅http://regex101.com/r/wT5wX7/1
您的正则表达式([0-9]+,\s+)
以某种方式与输入字符串匹配,但逗号只有一次出现(您可能期望零或多个逗号),并且后面应该是数字,而不仅仅是空格。
答案 1 :(得分:1)
使用此:\(([0-9]+[\,]{1}[\s]*)+[0-9]+\)
修改: \(([0-9]+[\,]{1}[\s]*)*[0-9]+\)
- 也匹配(1)
答案 2 :(得分:0)
这样的事情可能对你有帮助。
(\(){1}(\d+,[ ]+)+(\)){1}
或使用leading和trailng /
/(\(){1}(\d+,[ ]+)+(\)){1}/
你试过的方法([0-9] +,\ s +) 是说您可以拥有任意数量的数字,然后是逗号,后跟空格。在您的尝试中,您考虑了多个数字,后跟逗号,或前导和尾随括号。