gpt4 book ai didi

Java : Regex expression for lastindexOf

转载 作者:行者123 更新时间:2023-12-01 06:53:27 28 4
gpt4 key购买 nike

我的示例代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub

String str[] = {"A","B","C"};
String s = "TEST FOR A STRING CONSTANT B. END.";
int retIndex = -1;

for (int i = 0, len = str.length; i < len; i++){
//length-1 is because, we should not check the empty space unicode(\u0021)

int index = s.lastIndexOf(str[i]);
if(index>retIndex){
retIndex = index;
}
}
System.out.println("RETINDEX"+retIndex);

Pattern pattern = Pattern.compile("A|B|C");
Matcher m = pattern.matcher(s);

while(m.find()){
retIndex = m.start();
System.out.println(m.group()+" : "+m.end()+" : "+m.start());
}

System.out.println("REGEX RETINDEX"+retIndex);
}
}

我得到了输出:

RETINDEX27
A : 10 : 9
C : 19 : 18
A : 24 : 23
B : 28 : 27
REGEX RETINDEX27

我只想要最大索引输出。无需执行其他三个循环。如何根据我的需要更改上述一项? lastindexOf 与正则表达式完全匹配。

谢谢

最佳答案

您可以通过为正则表达式之前的所有内容编写贪婪匹配来找到最后一次出现的正则表达式,例如:

.*(A|B|C)

给定您的测试字符串,.* 将匹配直到最后一个 B 的所有内容,您可以从捕获组中获取 B。

要访问捕获组,请使用采用 int 参数的方法:

    Pattern pattern = Pattern.compile(".*(A|B|C)");
Matcher m = pattern.matcher(s);
if (m.find()) {
retIndex = m.start(1);
System.out.println(m.group(1)+" : "+m.end(1)+" : "+m.start(1));
}

关于Java : Regex expression for lastindexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19087688/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com