java - 在正则表达式模式匹配后删除部分匹配器

标签 java regex

我需要帮助编写正则表达式模式以从原始字符串中仅删除部分匹配器。

原始字符串: 2017-02-15T12:00:00.268+00:00

预期字符串: 2017-02-15T12:00:00+00:00

Expected String 以毫秒为单位删除所有内容。

我的正则表达式模式如下所示:(:[0-5][0-9])\.[0-9]{1,3}

我需要这个正则表达式来确保我只从某个时间字段中删除毫秒,而不是点之后的所有内容。但是使用上面的正则表达式,我也删除了分钟部分。请提出建议和帮助。

最佳答案

您已经定义了一个 capturing group在您的模式中使用 (...) ,并且您希望在执行替换后出现该部分字符串。您只需要使用 backreference存储在此捕获中的值。可以用 $1 来完成:

String s = "2017-02-15T12:00:00.268+00:00";
String res = s.replaceFirst("(:[0-5][0-9])\\.[0-9]{1,3}", "$1");
System.out.println(res); // => 2017-02-15T12:00:00+00:00

参见 Java demo和一个 regex demo .

替换模式中的 $1 告诉正则表达式引擎它应该在匹配对象数据中查找 ID 为 1 的捕获组。由于您只有一对未转义的括号(1 个捕获组),因此该组的 ID 为 1。

关于java - 在正则表达式模式匹配后删除部分匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42527894/

相关文章:

java - 如何将字节数组转换为字符串数组而不进行任何转换

java - 处理Java : Cursor position of text box off

JavaScript 匹配包含特定前缀的文件

javascript - 字符类中如何解释单词字符?

javascript - 匹配字符和最大长度的正则表达式

java - 选择微调器后的附加操作

java - 获取方法中所有变量名

java - 为什么我无法访问成员(member)?

php - 正则表达式主题标签和 html 实体混合

javascript - 正则表达式匹配尖括号之外的文本