【问题标题】:Regex for matching with space in a string用于匹配字符串中空格的正则表达式
【发布时间】:2021-11-30 15:40:34
【问题描述】:

我需要在一些文本前面附加一个前缀,文本和前缀之间有空格。

例如: “示例文本”将变为 “[EXTERNAL] 示例文本”。

如果前缀已经包含在文本中(不区分大小写),那么我需要将前缀替换为全部大写。

例如,如果文本是:“[External] Sample”或“[External]Sample”或“[EXTERNAL]Sample”:

在所有情况下,我都需要在前缀和示例文本之间添加空格的“[EXTERNAL] Sample”。

    private static final String TITLE_REGEX_PATTERN = "(?i)"+ Pattern.quote("[external]");
    private static final String EXTERNAL_TITLE_PREFIX = "[EXTERNAL] ";



private String appendPrefixToTitle(String title) {
        if (!titleContainsPrefix(title)) {
            return "[EXTERNAL] " + title;
        } else {
            return title.replaceFirst(TITLE_REGEX_PATTERN, EXTERNAL_TITLE_PREFIX);
        }
    }

private boolean titleContainsPrefix(String title) {
        return StringUtils.beginsWithIgnoreCase(title, EXTERNAL_TITLE_PREFIX.trim());
    }

如果标题已经包含正确的格式,这样做会增加一个额外的空格。在不拆分输入的情况下向我建议一个更好的方法。

【问题讨论】:

  • 您只检查两种可能的模式,显然还有更多。

标签: java regex string replaceall


【解决方案1】:

试试这个代码来替换文本开头可能出现的[External]

String text = "[External]Sample";
text = Pattern.compile("(^\\[EXTERNAL\\]\\s*)?", Pattern.CASE_INSENSITIVE).matcher(text).replaceFirst("[EXTERNAL] ");

【讨论】:

    猜你喜欢
    • 2017-06-28
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多