java - 从字符串中获取一组数字

标签 java regex

我有一个包含字符串的文件,其中又包含 10 位数字。我需要使用正则表达式提取数字并将它们放入数组中。 我想我可以使用 \d{10} 但我不确定如何在 Java 中实际应用它。

此外,复杂性的另一个因素是,如果有很多数字,则可能有多个具有不同形式的数字,例如 123456745-9123456745-95表示一个范围。我也想提取这些数字。 (我可以处理在 java 中创建数字范围,正则表达式对此不是必需的)

任何提示,我们将不胜感激!

最佳答案

您可以拆分非数字字符,但保留 -:

String[] numbers = input.split("[^\\-\\d]+");

示例:

String input = "bla bla bla 123456789 bla bla 123456789 bla bla 123456765-9 bla bla bla 123456767-89 bla bla";
input = input.replaceFirst("^[^\\-\\d]*", ""); //remove the leading non-digits if any
String[] numbers = input.split("[^\\-\\d]+"); //split
System.out.println(Arrays.toString(numbers));

输出:

[123456789, 123456789, 123456765-9, 123456767-89]

关于java - 从字符串中获取一组数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945592/

相关文章:

java - Spring Boot - 使用自定义对象数组 JSON 序列化自定义对象

java - 从字符串中获取值

java - 无法使用输入填充 HashMap

javascript - 检测复杂的骰子格式

java - 如何让Android应用程序在安装时有一个包含图像的文件夹?

java - 如何在manyToMany字段中实现 View ?

java - 如何使用数组对象访问嵌套类中的变量?

php - 匹配 "{number}"的正则表达式

regex - cmake - 编译正则表达式时出错

ruby - 用于 GitHub 风格的存储库和问题 Markdown 的正则表达式