我有一个字符串,其中包含yyyy-MM-dd
格式的日期以及其他符号。
其中一些日期末尾包含'Z'
符号。
例如:
control1970-04-26Z_shifted1982-02-01_Zulu1999-09-09Z
我需要消除字符串中的这些“ Z”符号,我想正则表达式将是一个不错的解决方案。
我已经尝试过以下正则表达式:
\d{4}-\d{2}-\d{2}Z{1}
但是它匹配整个日期,包括
'Z'
字符。有什么方法可以只匹配
'Z'
字符并使用replaceAll
方法消除它? 最佳答案
您可以使用捕获组,并用占位符替换为该组中存储的值:
String result = s.replaceAll("(\\d{4}-\\d{2}-\\d{2})Z", "$1");
请参见regex demo。在这里,
(\\d{4}-\\d{2}-\\d{2})
是捕获组,因为有一对未转义的括号,其值存储在组1中。Z
刚刚匹配。当我们用$1
替换匹配项时,日期会被粘贴回结果字符串中,而Z
将被丢弃。请注意,如果要确保只匹配四个数字,而前面没有四位数,请在模式前加上
(?<!\\d)
。如果要确保在
Z
之后没有其他字母,可以在模式末尾附加(?![a-zA-Z])
。