正则表达式检查没有句子
RegEx to check not to have a sentence
我有 regex1 = "^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?.+";
来匹配 Groovy
中的以下行
def msg1 = "Line : 1 Invoice does not foot Reported"
def msg2 = "Line : 2 Could not parse INVOICE_DATE value"
def msg5 = "Line 3 : Could not parse ADJUSTMENT_AMOUNT value"
def msg6 = "Line 4 : MATH ERROR"
现在我正在尝试匹配没有 Invoice does not foot Reported
句子的消息,所以我调整了正则表达式如下
def regex2 = "^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?((?!Invoice does not foot Reported).).+"
当我执行 msg1.matches(regex2)
时,我得到的结果是 true 而不是 true 而不是 false。
有人可以帮我解决这个问题吗?
只需在第二个 \d+
之后添加否定前瞻,不要忘记将 .*?
放入否定前瞻断言中。
"^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"
示例:
String msg1 = "Line : 1 Invoice does not foot Reported";
String msg2 = "Line : 2 Could not parse INVOICE_DATE value";
String msg5 = "Line 3 : Could not parse ADJUSTMENT_AMOUNT value";
String msg6 = "Line 4 : MATH ERROR";
System.out.println(msg1.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg2.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg5.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg6.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
输出:
false
true
true
true
我有 regex1 = "^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?.+";
来匹配 Groovy
def msg1 = "Line : 1 Invoice does not foot Reported"
def msg2 = "Line : 2 Could not parse INVOICE_DATE value"
def msg5 = "Line 3 : Could not parse ADJUSTMENT_AMOUNT value"
def msg6 = "Line 4 : MATH ERROR"
现在我正在尝试匹配没有 Invoice does not foot Reported
句子的消息,所以我调整了正则表达式如下
def regex2 = "^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?((?!Invoice does not foot Reported).).+"
当我执行 msg1.matches(regex2)
时,我得到的结果是 true 而不是 true 而不是 false。
有人可以帮我解决这个问题吗?
只需在第二个 \d+
之后添加否定前瞻,不要忘记将 .*?
放入否定前瞻断言中。
"^Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"
示例:
String msg1 = "Line : 1 Invoice does not foot Reported";
String msg2 = "Line : 2 Could not parse INVOICE_DATE value";
String msg5 = "Line 3 : Could not parse ADJUSTMENT_AMOUNT value";
String msg6 = "Line 4 : MATH ERROR";
System.out.println(msg1.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg2.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg5.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
System.out.println(msg6.matches("Line\s(?:(\d+)\s)?\s*:\s+(\d+)?(?!.*?\bInvoice does not foot Reported).+"));
输出:
false
true
true
true