java - 将可变长度的点分隔数字序列与正则表达式进行匹配

标签 java regex

我正在使用 Java 解析 Excel 电子表格中的文本。

我需要验证文本中是否存在 3 个整数的序列。

整数序列是:

  • 内部用逗号分隔
  • 外部以空格分隔

序列中的整数可以有 1 位或 2 位数字。

这是我的尝试:

*((\d|\d\d)[^\w](\d|\d\d)[^\w](\d|\d\d))*

* 表示我前面可以有字符,[\d|\d\d] 是一位或两位数字,[^\w] 是非单词字符?

  • 有效文本:CPI WEIGHTS 05.1.2:地毯和其他地板覆盖物
  • 无效文本:CPIH INDEX 05.2:HOUSEHOLD TEXTILES 2005=100

最佳答案

你最后的评论实际上澄清了这个问题。

假设您正在寻找由点分隔的 1 或 2 位数字序列,外部由空格分隔,下面是一个示例:

String ok = "CPI WEIGHTS 05.1.2 : CARPETS & OTHER FLOOR COVERINGS";
String notOk = "CPIH INDEX 05.2 : HOUSEHOLD TEXTILES 2005=100";
Pattern p = Pattern.compile("(\\d{1,2}(\\.|\\s)){3}");
Matcher m = p.matcher(ok);
while (m.find()) {
    System.out.printf("Found: %s%n", m.group());
}
m = p.matcher(notOk);
while (m.find()) {
    System.out.printf("Found: %s%n", m.group());
}

输出

Found: 05.1.2 

关于java - 将可变长度的点分隔数字序列与正则表达式进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571772/

相关文章:

java - 清除单选按钮的选择

java - 基本 maven 插件项目不工作,Mojo 插件描述符不生成

java - Android - 如何重新显示主要 Activity

java - 使用Java正则表达式匹配前面没有百分号的字母字符

python - 如何在 python 中使用正则表达式在特定单词之前获取特定模式的所有日期或关键字?

java正则表达式从具有两个方差的字符串中提取数字

java - 当 web 服务停止工作时,为什么我看到很多套接字处于 CLOSE_WAIT 状态?

java - 使用 Java 中的产品 API 开发亚马逊 WS 客户端

javascript - 在字符串中转义 RegExp.lastMatch ($&)

regex - 从字符串中提取数字-Google电子表格