Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要解释空字符串的正则表达式_Java_Regex - Fatal编程技术网

Java 要解释空字符串的正则表达式

Java 要解释空字符串的正则表达式,java,regex,Java,Regex,我为SIEM编写了一个正则表达式,用于捕获Windows安全事件4740-用户帐户锁定的调用方计算机名 问题是,有时“Caller Computer Name”字段的值为null或空,而我的正则表达式没有考虑到这一点。剩余的影响是,无论何时使用空值捕获事件,它都会在我的自定义电子邮件通知中导致语法问题 请参见Regex101: Caller Computer Name:\s+([^ ]+) 未找到第二个出现的调用方计算机名:,但我想找到该子字符串。如何编写一个正则表达式来解释这两种情况?是否有

我为SIEM编写了一个正则表达式,用于捕获Windows安全事件4740-用户帐户锁定的调用方计算机名

问题是,有时“Caller Computer Name”字段的值为null或空,而我的正则表达式没有考虑到这一点。剩余的影响是,无论何时使用空值捕获事件,它都会在我的自定义电子邮件通知中导致语法问题

请参见Regex101:

Caller Computer Name:\s+([^ ]+)
未找到第二个出现的
调用方计算机名:
,但我想找到该子字符串。如何编写一个正则表达式来解释这两种情况?是否有值。

使用

Caller Computer Name:\s*(\S*)
\S*
匹配0个或多个非空白字符

完整图案细节

  • 呼叫方计算机名:
    -一个文本
    呼叫方计算机名:
    子字符串
  • \s*
    -0个或更多空格字符
  • (\S*)
    -与0个或更多字符(除空格外)匹配的捕获组#1

注意Java中的
(\S+)
(\S*)
之间有一个区别:如果没有值,第一个组将为null,第二个将用空字符串初始化。

如果有空值,正则表达式将匹配,因为
*
如果字符串后面没有字符,则匹配0或更多

/Caller Computer Name:\s*[^ ]*/

“s*-1个或多个空格字符”打字错误。应该是0或更多我将其包装为捕获组,它似乎已解决了我电子邮件通知中的xml问题。该字段不仅显示为“空白”<代码>呼叫者计算机名:(\s*[^]*)