单个Java正则表达式中的条件替换

Jon*_*Jon 1 java regex

我有一些字母 - 数字字符形式的符号,后跟一个数字.这个数字是一年,我需要扩展到两位数年份,其中9年成为09年,任何其他年份都以1为前缀.

例如:

GCZ0 -> GCZ10
GCZ1 -> GCZ11
...
GCZ8 -> GCZ18
GCZ9 -> GCZ09
Run Code Online (Sandbox Code Playgroud)

我正在玩,([A-Z]+)([9+])([0-9]+)但我不知道如何让替换有条件地包括正确的0或1前缀.

一个正则表达的大师能指出我正确的方向吗?出于不幸的原因,我需要在单个Java正则表达式匹配/替换中执行此操作.

谢谢,乔恩

Jas*_*n S 5

出于不幸的原因,我需要在单个Java正则表达式匹配/替换中执行此操作.

似乎怀疑存在这样的解决方案......传统的方法是使用Matcher.appendReplacementMatcher.appendTail迭代源字符串,找到模式匹配,对它们执行任意逻辑,并替换适当的替换.

在Javascript中,您可以将函数String.replace()用作"智能替换"而不是固定字符串.