我有一个具有奇怪配置密钥格式的遗留应用程序,我确定该应用程序遵循以下规则:
- 密钥可以是一个或多个长度任何字符(包括_
- 但是,密钥不能以_结尾,也不能有__
- 除了__可以表示后面只有数字的可选后缀
下面是一些例子:
foo_bar__2 -- legal
_foo_bar__2 -- legal
foo -- legal
foo--$%^## -- legal
$%^# -- legal
foo__42 -- legal
foo_ -- illegal
f__o__2 -- illegal
_ -- illegal
foo___2 -- illegal
foo__xzy -- illegal
在我的Java代码中,我得到了(.+[^_])(?:__(\\d+))?
,但它有一个问题,它没有捕捉到数字部分.相反,它捕获后缀作为键的一部分.
一百零二