Java 要解释空字符串的正则表达式
我为SIEM编写了一个正则表达式,用于捕获Windows安全事件4740-用户帐户锁定的调用方计算机名 问题是,有时“Caller Computer Name”字段的值为null或空,而我的正则表达式没有考虑到这一点。剩余的影响是,无论何时使用空值捕获事件,它都会在我的自定义电子邮件通知中导致语法问题 请参见Regex101:Java 要解释空字符串的正则表达式,java,regex,Java,Regex,我为SIEM编写了一个正则表达式,用于捕获Windows安全事件4740-用户帐户锁定的调用方计算机名 问题是,有时“Caller Computer Name”字段的值为null或空,而我的正则表达式没有考虑到这一点。剩余的影响是,无论何时使用空值捕获事件,它都会在我的自定义电子邮件通知中导致语法问题 请参见Regex101: Caller Computer Name:\s+([^ ]+) 未找到第二个出现的调用方计算机名:,但我想找到该子字符串。如何编写一个正则表达式来解释这两种情况?是否有
Caller Computer Name:\s+([^ ]+)
未找到第二个出现的调用方计算机名:
,但我想找到该子字符串。如何编写一个正则表达式来解释这两种情况?是否有值。使用
Caller Computer Name:\s*(\S*)
\S*
匹配0个或多个非空白字符
看
完整图案细节:
-一个文本呼叫方计算机名:
子字符串呼叫方计算机名:
-0个或更多空格字符\s*
-与0个或更多字符(除空格外)匹配的捕获组#1(\S*)
注意Java中的
(\S+)
和(\S*)
之间有一个区别:如果没有值,第一个组将为null,第二个将用空字符串初始化。如果有空值,正则表达式将匹配,因为*
如果字符串后面没有字符,则匹配0或更多
/Caller Computer Name:\s*[^ ]*/
“s*-1个或多个空格字符”打字错误。应该是0或更多我将其包装为捕获组,它似乎已解决了我电子邮件通知中的xml问题。该字段不仅显示为“空白”<代码>呼叫者计算机名:(\s*[^]*)