RegEx忽略字母,直到出现数字,然后再匹配字母

时间:2019-05-29 11:37:47

标签: java regex

这旨在用于Java。 想象下面的示例输入:

WRA1007
1085808
1092650S
3901823CV

我要匹配至少一个数字后的所有字母

所需的输出:

S
CV

实际输出:

0S
3CV

我当前的方法如下:

\d[a-zA-Z]+

此模式的问题在于它也预先包含了数字。我当前的解决方案是随后删除结果字符串的第一个字符。这对我来说似乎并不令人满意。

2 个答案:

答案 0 :(得分:3)

您需要向后看:

(?<=\d)[a-zA-Z]+

(?<=\d)的意思是“该位置前必须有一个数字,但不匹配”。

Demo

或者,您可以使用一对()包围要获得的零件:

\d([a-zA-Z]+)

这称为“组”,您可以通过在group(1)上调用Matcher来获取其值。

答案 1 :(得分:2)

如果“添加”组,则可以得到仅包含字母的组1

\d([a-zA-Z]+)