尝试使用正则表达式查找最后一个大写字符的索引
Trying to find the index of the last uppercase char using regex
我需要一些帮助来尝试查找字符串中最后一个大写字符的最后一个索引。我一直在使用正则表达式来这样做。但是它一直返回 -1 而不是 B 的索引 7.
下面突出显示了代码
public class Main {
public static void main(String[] args) {
String s2 = "A3S4AA3B3";
int lastElementIndex = s2.lastIndexOf("[A-Z]");
System.out.println(lastElementIndex);
}
}
有人对如何解决这个问题有任何建议吗?
亲切的问候。
你可以得到最后一个大写字母的索引如下
int count = 0;
int lastIndex = -1;
for (char c : s2.toCharArray()) {
count++;
if (Character.isUpperCase(c)) {
lastIndex = count;
}
}
你可以试试正则表达式 [A-Z][^A-Z]*$
:
String s2 = "A3S4AA3B3";
Matcher m = Pattern.compile("[A-Z][^A-Z]*$").matcher(s2);
if(m.find()) {
System.out.println("last index: " + m.start());
}
输出:
last index: 7
关于正则表达式:
[A-Z]
: 大写字母
[^A-Z]*
:^
表示否定,可能包含其他字符*
零次或多次
$
: 行尾
我需要一些帮助来尝试查找字符串中最后一个大写字符的最后一个索引。我一直在使用正则表达式来这样做。但是它一直返回 -1 而不是 B 的索引 7.
下面突出显示了代码
public class Main {
public static void main(String[] args) {
String s2 = "A3S4AA3B3";
int lastElementIndex = s2.lastIndexOf("[A-Z]");
System.out.println(lastElementIndex);
}
}
有人对如何解决这个问题有任何建议吗?
亲切的问候。
你可以得到最后一个大写字母的索引如下
int count = 0;
int lastIndex = -1;
for (char c : s2.toCharArray()) {
count++;
if (Character.isUpperCase(c)) {
lastIndex = count;
}
}
你可以试试正则表达式 [A-Z][^A-Z]*$
:
String s2 = "A3S4AA3B3";
Matcher m = Pattern.compile("[A-Z][^A-Z]*$").matcher(s2);
if(m.find()) {
System.out.println("last index: " + m.start());
}
输出:
last index: 7
关于正则表达式:
[A-Z]
: 大写字母[^A-Z]*
:^
表示否定,可能包含其他字符*
零次或多次$
: 行尾