删除空字符串的Java正则表达式

删除空字符串的Java正则表达式,java,regex,null,Java,Regex,Null,我想用空字符串(“)替换以下字符串,如果它等于“NULL”、“NULL”、“NULL”、“NULL”、“NULL”、“NULL”、“(NULL)”、“[NULL]”、{NULL}等。我发现下面的正则表达式很难满足所有情况 ^NULL$ 因此,如果输入是“空b”,则输出将是“空b” 但是如果输入是“null”输出将是“您所描述的被称为“不区分大小写”的正则表达式。作为一名Java专家,我发现这本书有以下几行,经过编辑以满足您的需要: System.out.print(sample.replace

我想用空字符串(
)替换以下字符串,如果它等于
“NULL”、“NULL”、“NULL”、“NULL”、“NULL”、“NULL”、“(NULL)”、“[NULL]”、{NULL}
等。我发现下面的正则表达式很难满足所有情况

^NULL$
因此,如果输入是
“空b”
,则输出将是
“空b”


但是如果输入是
“null”
输出将是

您所描述的被称为“不区分大小写”的正则表达式。作为一名Java专家,我发现这本书有以下几行,经过编辑以满足您的需要:

System.out.print(sample.replaceAll("(?i)\\b(?:null)\\b",""));
试试这个:

str.replaceAll("(?i)\\(null\\)|\\[null\\]|\\{null\\}|null", "");
试试这个

private static String removeNull(String input)
    {
        String[] splittedValue = input.split(" ");
        StringBuilder stringBuilder = new StringBuilder();
        for (String value : splittedValue)
        {
            if (!value.equalsIgnoreCase("null"))
            {
                stringBuilder.append(value);
                stringBuilder.append(" ");
            }
        }
        return stringBuilder.toString();
    }

您可以使用以下模式进行验证:
(?i)[(\\[{]?null[)\\]}]?
。 请参见以下示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

public class EnumProgram {

    public static void main(String... args) {
        test("a NULL b", "a  b");
        test("a null b", "a  b");
        test("a Null b", "a  b");
        test("a NuLl b", "a  b");
        test("a (null) b", "a  b");
        test("a [null] b", "a  b");
        test("a {null} b", "a  b");
    }

    private static void test(String value, String expected) {
        String newValue = Util.removeNullString(value);
        System.out.println(value + " : " + newValue.equals(expected));
    }
}

class Util {
    private static Pattern pattern = Pattern.compile("(?i)[(\\[{]?null[)\\]}]?");

    public static String removeNullString(String value) {
        if (StringUtils.isEmpty(value)) {
            return StringUtils.EMPTY;
        }

        Matcher matcher = pattern.matcher(value);
        return matcher.replaceAll(StringUtils.EMPTY);
    }
}
使用(?i)验证正则表达式中的不区分大小写。例如,请参见下面的代码。下面的代码将输出“a b”


a空b
的预期输出是什么?我希望
ab
。使用并取出^$“a null b”输出必须是“a null b”,并尝试使用“(?I)null”作为正则表达式。请参考我下面的答案。听说过匹配吗?这也将匹配
[null]
,虽然我不相信它应该匹配。每次你使用这个正则表达式时都会杀死一只小猫。首先看,这不起作用。那
blablabla{null}bla
呢?
(null)
[null]
{null}
呢?
(null)
[null]
{null}呢
?谢谢,…但这将不匹配(null)我在原始帖子中没有看到此要求。抱歉。请尝试在正则表达式中使用(?I),因为在我下面的回答中,Regex与我的预期非常接近…谢谢,匹配像{null]这样的东西实际上是可以的?这实际上也会匹配(null){null]是匹配的。但是正如micantox提到的,有一个捕获…它也是匹配的(null或null)-不应该是这种情况
String str = "a NULl b";
String regx = "(?i)null";
String str2 = str.replaceAll(regx, "");
System.out.println(str2);

output : a b