我在 java 中使用正则表达式,无法弄清楚如何仅匹配预定义符号内的数字。
这是我的字符串之一的示例:
some text [1] some and numbers 12, 14 and more text [11,1] another text [3,6, 7] and some more text [5;16]
真的可以只检索方括号中的数字吗?在这种情况下:1 11 1 3 6 7 5 16 这不应与方括号中的任何其他符号匹配。
我已经尝试了多种选择,包括:
Pattern k = Pattern.compile("\\[(\\d+)\\]");
但这仅给出一个数字的作品,而不是其他数字的作品。我尝试将它们分组,例如 (?:\\[) some code inside (?:\\])
但没有成功。
更新
分组的解决方法:
Pattern k = Pattern.compile("\\[(\\d+)(?:.)?(\\d+)?\\]");
但会生成括号和逗号作为输出。
最佳答案
您可以选择这些数字,可以使用以下正则表达式:
(?:\G|\[)[,;\s]*(\d+)
它只选择数字。
说明
(?:\G|\[)
匹配上一个匹配的结束位置或左括号[,;\s]*
匹配逗号、分号或空格零次或多次(\d+)
捕获数字
您将获得第 1 组中的号码。
关于java - 正则表达式 : match only separate numbers inside specified symbols,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376111/