我正在使用 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/