我认为您在这里混合了两件事,即替换和匹配。
当您想要提取与特定模式匹配的输入字符串的一部分时,使用匹配。在您的情况下,这似乎是您想要的,并且为了获得一个或多个数字后跟一个星号而不是任何前面的数字,您可以使用以下正则表达式:
^[0-9]+(?=\*)
这是一个Java片段:
String subjectString = "006*";
String ResultString = null;
Pattern regex = Pattern.compile("^[0-9]+(?=\\*)");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
另一方面,当您想用其他东西替换输入字符串中重复出现的模式时,使用替换。
例如,如果您想用括号括起来的相同数字替换所有后跟星号的数字,那么您可以这样做:
String input = "006*";
String result = input.replaceAll("^([0-9]+)\\*", "($1)");
请注意使用来引用使用正则表达式模式中$1
的捕获组捕获的数字。([0-9]+)