我需要帮助构建一个Java风格的正则表达式,它提取任何类型的大写字母第二次出现后的一切.
例如,对于示例字符串"98A02D1"
,结果应该是D1
.大写字母第二次出现之前出现什么并不重要.
我想出来的是:(?:.*?[A-Z]){2}(.*)
这是不起作用的,并且只从第三次出现时捕获.将数字放在大括号中并不会有什么帮助.感谢任何人的帮助!
我需要帮助构建一个Java风格的正则表达式,它提取任何类型的大写字母第二次出现后的一切.
例如,对于示例字符串"98A02D1"
,结果应该是D1
.大写字母第二次出现之前出现什么并不重要.
我想出来的是:(?:.*?[A-Z]){2}(.*)
这是不起作用的,并且只从第三次出现时捕获.将数字放在大括号中并不会有什么帮助.感谢任何人的帮助!
您可以从第二个大写字母开始匹配.或者,您可以匹配第二个大写字母之前的任何内容,并将其替换为空白.
以下正则表达式将与应删除的部分匹配:
^[^A-Z]*[A-Z][^A-Z]*
Regex Explanation:
^
:字符串的开始[^A-Z]*
:非大写字符的任意序列[A-Z]
:大写字符[^A-Z]*
:非大写字符的任意序列在您的Java代码中:
String string = "98A02D1";
String pattern = "^[^A-Z]*[A-Z][^A-Z]*";
System.out.println(string.replaceFirst(pattern, ""));
Output:
D1
查看regex演示here.com/r/Brd6X8/1" rel="nofollow noreferrer">here和Java演示here.