我需要找到字符串中字符集的最后一个索引。考虑字符集为x,y,z和string作为Vereador Luiz Pauly Home,那么我需要index为18。
因此,寻找索引我已经创建了一个模式DOTALL标志和贪婪量词为*(S?)。(X | Y | Z) 。当模式应用于该字符串(多行)时,我可以从起始组中找到索引。代码:
int findIndex(String str){
int index = -1;
Pattern p = Pattern.compile("(?s).*(x|y|z)");
Matcher m = regex.matcher(str);
if(m.find()){
index = m.start(1);
}
return index;
}
Run Code Online (Sandbox Code Playgroud)
如预期的那样,如果匹配,它将正确返回值。
但是,如果没有匹配项,则它花费的时间太长(600000个字符需要17分钟),因为它是贪婪的匹配项。
我尝试了其他量词,但无法获得所需的输出。那么,谁能推荐更好的正则表达式呢?
PS:我也可以考虑从最后遍历内容并找到索引。但是我希望正则表达式中有更好的方法可以快速完成工作。