Java 如何从序列中删除最后一个数字?

Java 如何从序列中删除最后一个数字?,java,regex,Java,Regex,我想使用Java中的replace方法从序列中删除最后一个数字(即5)。如何使用正则表达式捕获序列末尾看到的第一个数字?所有非数字都是字母。您可以执行以下操作: String sequence = "html1body2ul3li1p5a"; 这个怎么样 sequence.replaceFirst("\\d([^\\d]*)$", "$1"); 你也可以试试这个 String sequence = "html1body2ula3li1p5a"; System.out.println("Rem

我想使用Java中的replace方法从序列中删除最后一个数字(即5)。如何使用正则表达式捕获序列末尾看到的第一个数字?所有非数字都是字母。

您可以执行以下操作:

String sequence = "html1body2ul3li1p5a";
这个怎么样

sequence.replaceFirst("\\d([^\\d]*)$", "$1");

你也可以试试这个

String sequence = "html1body2ula3li1p5a";
System.out.println("Remove last char "+sequence.substring(1,sequence.length()-1));
System.out.println("Replace last char"+sequence.replaceAll("a$","XXX"));

如果只需要替换最后的0-9个字符,则可以使用:

String sequence = "html1body2ul3li1p5a";
sequence = sequence.replaceAll("(\\d+)(?!.*\\d)", "");
这将用零替换应用字符串中的最后一个数字

myString.replaceAll("\\d+(?=\D*$)", "")

这将用零替换应用字符串中的最后一组数字(例如
sdfsdflih193a
中的
93
)。

确实要使用正则表达式吗?您想捕获还是替换?@ExplosionPills replace您甚至不需要在
\\d
之后匹配任何内容<代码>(.*)\\d足够了。请注意,当字符串包含新行时,可能与描述不符。如果您已经知道数字的位置,则可能会出现这种情况。这不适用于一般情况。您假设从最后一个数字到字符串末尾只有1个字符,您捕获的字符数超过了“最后一个数字”。您当前正在捕获最后一个连续的数字序列。
myString.replaceAll("\\d+(?=\D*$)", "")
myString.replaceAll("\\d+(?=\D*$)", "")