Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正则表达式与两个条件混淆_Java_Regex_String_Pattern Matching_Matching - Fatal编程技术网

Java正则表达式与两个条件混淆

Java正则表达式与两个条件混淆,java,regex,string,pattern-matching,matching,Java,Regex,String,Pattern Matching,Matching,如果第一个if条件遇到这种序列(例如,除0外的1,2,3…9),并且只允许传递1位数字,则该条件应为真。如果第二个if的序列为12、22、33,则为真。。99除了01,02…09。它只允许传递两位数字。但是由于某种原因,第一个条件允许两个或更多的数字,它不会进入下一个条件 Pattern num1 = Pattern.compile("([1-9&&[^0]]){1}"); Matcher matchNum1 = num1.matcher(min); Pattern num2

如果第一个if条件遇到这种序列(例如,除0外的1,2,3…9),并且只允许传递1位数字,则该条件应为真。如果第二个if的序列为12、22、33,则为真。。99除了01,02…09。它只允许传递两位数字。但是由于某种原因,第一个条件允许两个或更多的数字,它不会进入下一个条件

Pattern num1 = Pattern.compile("([1-9&&[^0]]){1}");
Matcher matchNum1 = num1.matcher(min);

Pattern num2 = Pattern.compile("[1-9[^0]]{2}");
Matcher matchNum2 = num2.matcher(min);


if (matchNum1.find()) {
   System.out.println("contains number and no trailing zeroes " + min );
}
else if (matchNum2.find()) {
    System.out.println("contains 2 numbers " + min);
}
else {
    System.out.println("No match");
}

你的正则表达式不能满足你的需要。请参阅以下正则表达式:

Pattern num1 = Pattern.compile("^[1-9]$");
Pattern num2 = Pattern.compile("^[1-9]\\d$");
-
^
断言字符串开头的位置。
-
[1-9]
匹配1到9之间的单个字符。
-
\d
匹配一个数字[0-9]。优雅的元字符表示法。
-
$
断言字符串末尾的位置


^表示行的开始,$表示行的结束。@Unihedron您的代码是否满足第二个条件?@Unihedron否其确定,我在oracle java正则表达式文档部分中找不到它。但我会用谷歌搜索你提到的关键词:)作为你的第二个条件