当前位置: 首页 > 知识库问答 >
问题:

尝试使用regex查找最后一个字符的最后一个索引

吴展
2023-03-14

我需要一点帮助来查找字符串中最后一个大写字符的最后一个索引

我一直在使用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);
    }
}

有没有人对如何解决这个问题有什么建议?

共有1个答案

欧阳安阳
2023-03-14

您可以尝试regex[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]*:^表示否定,可以包含其他字符*零次或多次
  • $:行尾
 类似资料:
  • 问题内容: 我有绳子。我想找到最后一个/来分割字符串。最初的尝试是:但这很明显。有人给小费吗? 问题答案: 您是否需要为此使用正则表达式?将字符串。lastIndexOf(“ /”) 工作来查找索引,然后将String.substring(int start,int end) 与结果一起使用?还是您的实际数据不同且更加复杂,需要使用正则表达式?使用您提供的在最后一个/处分割字符串的代码,这里是代码

  • 我对RegEx-es和类似的搜索模式非常缺乏经验,而且我所尝试的每一种方法都不能正常工作(大多数情况下会导致)。 找到字符串中最后一组数字开始的索引的可靠而简单的方法是什么?

  • 问题内容: 以下代码段发出编译时错误。 第二行的错误是: 该错误消息基于NetBeans IDE。 如下声明该字符时。 编译时错误消失。 与最终字符串的情况无关 什么是修改有所作为吗? 问题答案: 原因是JLS#5.2(分配转换)如此表示: 如果该表达式是类型为byte,short,char或int的常量表达式(第15.28节),则当变量的类型为byte,short或char且常量表达式的值时,可

  • 问题内容: 不 使用或 仅 使用,当字段数未知或每行更改时,如何获取最后一个字段? __ 问题答案: 您可以尝试这样的事情: 说明 将“ maps.google.com”反转为 使用点(即“。”)作为定界符,并选择第一个字段,即 最后,我们再次将其反转以获得

  • 问题内容: 当您必须遍历一个集合并用分隔符分隔每个数据的字符串时,总是总是在末尾有一个额外的分隔符,例如 给出类似以下内容: serverId_1,serverId_2,serverId_3, 我想删除StringBuilder中的最后一个字符(不进行转换,因为在此循环之后我仍然需要它)。 问题答案: 其他人指出了该方法,但这是另一种替代方法: 或者,使用Guava中的类:) 从Java 8开始,

  • 问题内容: 我有以下形式的查询: 我很难确定上个季度的正确日期。因此,假设当前日期是 7月1日 ,即第三季度,我想将 4月1日 作为FIRST,将 6月30日 作为最后 一个季度 (即第二季度)的最后一天。 谷歌搜索了一下,找到了很多解决方案,但是每个解决方案都涵盖了SQL Server和可用的时髦方法,在我们的ORACLE数据库(Oracle 10g和11g)上不可用。 哦,是的,我还需要能够将