java - 正则表达式 : match only separate numbers inside specified symbols

标签 java regex

我在 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+)

它只选择数字。

See the demo

说明

  • (?:\G|\[) 匹配上一个匹配的结束位置左括号
  • [,;\s]* 匹配逗号、分号或空格零次或多次
  • (\d+) 捕获数字

您将获得第 1 组中的号码。

关于java - 正则表达式 : match only separate numbers inside specified symbols,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376111/

相关文章:

r - 如何使用 R 删除遵循特定模式但不包括另一个模式的字符串部分?

java - 从 Assets 加载时找不到文件?

java - Couchbase - 自动生成带有用户定义后缀的 key

php 在 500 字后将字符串插入到 html 中?包含 html 标签

ruby - 为什么 Chef 文件 search_file_replace 不起作用

Javascript RegExp 类型转换

php - str_ireplace 不适用于非 ASCII 字符

java - 500 内部服务器错误,获取请求时出现 NullPointerException

javascript - 无法使用 JavaScript 关闭 chrome 浏览器中的选项卡

java - Java中的Cookie问题