String s = "1.01";
Matcher matcher = Pattern.compile("[+-/\\*\\^\\%]").matcher(s);
if (matcher.find()) {
System.out.println(matcher.group());
}
输入字符串为"1.01",输出为“.”。我不理解为什么matcher.find()返回true,在输入字符串中没有“+”,“-”,“*”,“^”,“%”等符号。这是为什么?
[a-z]
匹配从a到z的所有小写字母,但[-az]
仅匹配破折号、a和z。[+-/]
将匹配任何+,-./
中的符号。"[+-/\\*\\^\\%]"
为了
"[-+/\\*\\^\\%]"
^^
或者不需要不必要的转义:
"[-+/*^%]"
我十分确定你需要转义 -
。 在字符类中,-
作为范围符号使用,例如在 [0-9]
中。 如果您想查找破折号的示例,则需要转义 -
。
如果重新排列内部符号,则可以完全使用模式而不需要任何转义。 [-+*^%]
应该有效,并且更容易阅读。
+
与重复无关。但是您对于破折号是正确的。 - jlordo+
,它会做出任何不同的解析吗? - Walls
matcher.find()
没有问题。 - Sotirios Delimanolis*
、^
或%
。 - fge