You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式实现移除首尾4040并适配三种场景

Java正则移除字符串首尾"4040"的解决方案

你之前用的^(4040)*|(4040)*$替换为空的方式,问题出在当字符串全是奇数个"4040"时,所有首尾的匹配项都会被清空,没法保留最后一个"4040"。要覆盖三种场景,咱们可以分情况处理:

处理逻辑

  • 先判断字符串是否完全由"4040"重复组成:
    • 若是,统计重复次数:奇数次数返回"4040",偶数次数返回空字符串
  • 其他情况(字符串包含非"4040"内容):直接用原正则移除首尾所有"4040"对,保留中间内容

Java代码实现

public class Remove4040Handler {
    public static String trim4040(String input) {
        // 匹配全由"4040"重复的情况
        if (input.matches("^(4040)+$")) {
            int repeatCount = input.length() / 4; // 每个"4040"占4个字符
            return repeatCount % 2 == 1 ? "4040" : "";
        }
        // 移除首尾所有"4040"
        return input.replaceAll("^(4040)*|(4040)*$", "");
    }

    public static void main(String[] args) {
        // 测试场景1:偶数个"4040"
        System.out.println(trim4040("4040404040404040")); // 输出空字符串
        // 测试场景2:首尾带"4040",中间有其他内容
        System.out.println(trim4040("4040StackOverFlow40404040")); // 输出"StackOverFlow"
        // 测试场景3:奇数个"4040"
        System.out.println(trim4040("404040404040")); // 输出"4040"
        // 测试无首尾"4040"的情况
        System.out.println(trim4040("HelloJava")); // 输出"HelloJava"
        // 测试单个"4040"
        System.out.println(trim4040("4040")); // 输出"4040"
    }
}

为什么分两步更靠谱

直接用单一正则很难同时兼顾三种场景,尤其是全奇数个"4040"的情况——正则的贪婪匹配会把所有"4040"都吃掉。先单独判断全重复的情况,再处理混合内容的场景,逻辑更清晰,也不容易出问题。

内容的提问来源于stack exchange,提问作者Deep Ghodasara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:07:33