删除空字符串的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