如何解决用Java反转波兰语表示法检查任何不应该在字符串数组中的符号或字符正则表达式
我试图弄清楚为什么这段代码无法正常工作,因为“ 156 154 152-3 +-”符号应不加任何异常地通过。在这种情况下,也许有更好的方法使用正则表达式吗?当我在不手动处理异常的情况下实际运行解释函数时,结果是正确的,一切都很好。但是对于本练习,需要进行此类异常处理。
这是代码:
public class RegexTest {
public static void main(String[] arg) {
boolean b = check_notation("156 154 152 - 3 + -");
System.out.println(b);
}
public static boolean check_notation(String pol){
pol = pol.trim();
String[] tokens = pol.split("\\s+");
for (String r : tokens) {
if (!(r.matches("-[0-9]*") || r.matches("[0-9]*") || r == "/" || r == "*" || r == "-" || r == "+")) {
throw new RuntimeException("There are symbols that are not allowed.");
}
}
return true;
}
}
解决方法
@searchfind ... r.matches()是特殊字符正则表达式检查所必需的。也; \\必须在+和*符号正则表达式之前添加前缀,以避免悬挂的元字符异常。
请在正则表达式条件下使用
if (!(r.matches("-[0-9]*") || r.matches("[0-9]*") || r.matches("/") ||
r.matches("\\*") || r.matches("-") || r.matches("\\+"))) {
throw new RuntimeException("There are symbols that are not allowed.");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。