我刚刚开始在工作中使用Java正则表达式,并且在使用Matcher find()方法时遇到了麻烦。
在以下代码中,i是从客户端收到的String参数,' list'是一个带有字符串值的现成链表,我想在列表中找到i中所有其他列表值中最小可能索引的值(如果确实存在匹配)。列表中的值可能在其末尾有一个星号,这意味着它们有一个通配符,因此有0个或更多的单词字符'在他们的最后 - 所以我必须考虑在我搜索时。这是代码:
Pattern checkRegex;
int tStart = i.length();
for (String t : list){
if (t.charAt(t.length()-1) == '*')
checkRegex = Pattern.compile("\\W" + t + "[0-9A-Za-z]*\\W");
else
checkRegex = Pattern.compile("\\W" + t + "\\W");
Matcher regexMatcher = checkRegex.matcher(i);
if (regexMatcher.find()){
if (tStart > i.indexOf(regexMatcher.regionStart()))
tStart = i.indexOf(regexMatcher.regionStart());
}
我收到错误 - 线程中的异常" main" java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1
调试之后,我发现程序在regexMatcher.find()命令崩溃了 - 但由于它是一个布尔方法,我不明白String索引必须在这里做什么。
感谢您的帮助。
答案 0 :(得分:1)
t.length()-1
是问题所在。如果t为空""
怎么办? 。在致电t.charAt()