我有一些文本样本,我试图应用正则表达式,但无法涵盖所有案例
文本样本:
311001
311 001
ds311001NM
ds311 001NM
asd,.;546798;l';
asd,.;546798;l';
asd,.; 546798;l';
asd,.; 546798 ;l';
asd,.; 546 798 ;l';
asd,.;546 798 ;l';
pin代码之间可以有空格,也可能没有空格。我尝试使用正则表达式[1-9]{3}\\s*[0-9]{3}
,但它并未涵盖所有情况,例如asd,.;506 798 ;l';
。
非常感谢任何帮助。
答案 0 :(得分:1)
您拥有的正则表达式匹配1-9
范围内的3位数字,因此无法找到200 345
类型的PIN。
你需要一个更简单的正则表达式
\d{3}\s*\d{3}
请参阅regex demo
List<String> strs = Arrays.asList("311001","311 001","ds311001NM","ds311 001NM","asd,.;546798;l';","asd,.;546798;l';","asd,.; 546798;l';","asd,.; 546798 ;l';","asd,.; 546 798 ;l';","asd,.;546 798 ;l';");
Pattern p = Pattern.compile("\\d{3}\\s*\\d{3}");
for (String str : strs) {
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group());
}
}