Java replaceAll方法在不匹配时返回null

时间:2017-10-09 21:32:18

标签: java regex

我有一些现有的Java代码

Pattern regex = Pattern.compile(regexStr, Pattern.CASE_INSENSITIVE);        
Matcher m = regex.matcher(value);
String replace= m.replaceAll(regexReplaceStr);

这在我的项目中是硬编码的。我无法改变它。我只能通过配置设置值regexStrregexReplaceStr。我需要做的是

  • 如果匹配,则返回原始字符串
  • 如果没有匹配,则返回空字符串

在这种情况下,我的字符串regexStrregexReplaceStr应该是什么?

例如,我有

regexStr = "^[^_]+_(.*)$"
regexReplace = "$0"

现在,如果输入字符串为AA_BBB,则返回的值为AA_BBB。现在,如果输入字符串是AABBB,我希望它返回空字符串。怎么办呢?

1 个答案:

答案 0 :(得分:1)

首先,代码不清楚。没有提到“价值”......

Matcher m = regex.matcher(value);
                           ^ ^

这段代码也没有背景。
它被用作方法吗?用户输入?

您可以在代码后添加:

if (replace == null) {
    replace = "";
}

然后它将用空字符串替换null。

但是我做了与你相同的代码,但它从未返回null ...