Java正则表达式匹配器模式不断返回false

时间:2018-11-19 03:04:51

标签: java

我在Java中遇到了正则表达式问题。我有以下这组正则表达式模式:

static Pattern parts = Pattern.compile("\\A([91|10|17|21|30].{1,20}\\s){1,5}\\Z");
static Pattern part1 = Pattern.compile("91([^ ]){1,14}\\s");
static Pattern part2 = Pattern.compile("10([^ ]){1,20}\\s");
static Pattern part3 = Pattern.compile("21([^ ]){1,20}\\s");
static Pattern part4 = Pattern.compile("17([^ ]){6,7}\\s");
static Pattern part5 = Pattern.compile("30([^ ]){1,4}\\s");

然后我尝试使用虚拟数据进行测试:

String s = "91448629517150623101408002301";
Matcher testMatcher = parts.matcher(s);
System.out.println(testMatcher.matches());

String s1 = "9143676601715Sep14101310147301";
Matcher testMatcher1 = parts.matcher(s1);
System.out.println(testMatcher1.matches());

伪数据的格式正确。但是,我不确定为什么都保留将我退还给我。有什么想法吗?

感谢进阶!

1 个答案:

答案 0 :(得分:0)

您提供的正则表达式可能与模式匹配不正确。我认为您可能要使用 \ s 空白字符)而不是 \ S 非空白字符)。

我建议您再次仔细检查documentation

例如,

static Pattern parts = Pattern.compile("\\A([91|10|17|21|30].{1,20}\\S){1,5}\\Z");