我在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());
伪数据的格式正确。但是,我不确定为什么都保留将我退还给我。有什么想法吗?
感谢进阶!
答案 0 :(得分:0)
您提供的正则表达式可能与模式匹配不正确。我认为您可能要使用 \ s (空白字符)而不是 \ S (非空白字符)。
我建议您再次仔细检查documentation。
例如,
static Pattern parts = Pattern.compile("\\A([91|10|17|21|30].{1,20}\\S){1,5}\\Z");