如何为“空字符串或'创建的新条目'指定正则表达式模式是一个子字符串”?
我尝试了(new entry created|)
但是Matcher.find()
模式在输入上是真的,如:
“
无效级别
有效等级范围是0-14。
“
不是执行直接编程的选项,例如
String.isEmpty() || String.contains("new entry created")
因为相同的方法将具有不同的模式作为输入。换句话说,我需要在这种情况下使用正则表达式。
我想坚持使用Matcher.find()
,因为我将使用其他错误模式 - 例如“无效”。
答案 0 :(得分:3)
您只需要使用 start 和 end 分隔符包围“空”部分,以便将搜索限制为输入的完全匹配:
(new entry created|^$)
答案 1 :(得分:2)
您的模式很好(对于Java),只需使用Matcher.matches()
而不是Matcher.find()
。
来自Class Matcher documentation:
所以,问题是,find方法会在任何字符串中找到空字符串替代。要在Java中查找完全匹配,请使用matches()
方法。
答案 2 :(得分:1)
你好试试这个模式......
(new entry created)|(^$)
我已经测试了这段代码
public static void main(String[] argv) {
String pattern = "(new entry created)|(^$)";
String input = "";
Pattern p = Pattern.compile(pattern);
boolean found = p.matcher(input).lookingAt();
System.out.println("'" + pattern + "'"
+ (found ? " matches '" : " doesn't match '") + input + "'");
}
答案 3 :(得分:1)
如果您的要求实际上与
匹配new entry created
或然后你可以使用
^(?:.*new entry created.*)?$
或(如果您的字符串可能包含换行符)
(?s)^(?:.*new entry created.*)?$
在Java中,您拥有.matches()
方法,可以删除锚点:
Pattern regex = Pattern.compile("(?:.*new entry created.*)?", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.matches();