2017-08-02 244 views
-1

我爲我的SIEM編寫了一個正則表達式來捕獲用於Windows安全事件4740 - 用戶帳戶鎖定的呼叫者計算機名稱。正則表達式爲空字符串

問題是,有時「調用者計算機名稱」字段有一個空值或空值,我的正則表達式不考慮它。其餘的影響是,無論何時用空值捕獲事件,它都會導致我的自定義電子郵件通知中出現語法問題。

link上Regex101:

Caller Computer Name:\s+([^ ]+) 

Caller Computer Name:第二次出現沒有找到,但我想找到子。我如何編寫一個說明任一條件的正則表達式?是否有價值。

回答

1

如果存在空值,正則表達式將匹配,因爲*與0或更多個烤箱匹配(如果字符串後面沒有字符)。

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

我將其封裝爲捕獲組,它似乎解決了我的電子郵件通知中的xml問題。該字段不僅僅顯示「空白」。 '來電顯示名稱:(\ s * [^] *)' – Heisenberg

+0

[Regex demo](https://regex101.com/r/9T7Ww3/1) – Heisenberg

2

使用

Caller Computer Name:\s*(\S*) 

\S*匹配0或多個非空白字符。

查看regex demo

完整圖案詳細

  • Caller Computer Name: - 字面Caller Computer Name:
  • \s* - 0或多個空白字符
  • (\S*) - 捕獲組#1中的匹配程度比其他0或多個字符空白。

注有在Java中(\S+)?(\S*)之間的差:在第一組將是無效如果沒有值,而第二個將與空字符串進行初始化。

+0

「s * - 1個或更多空白字符」拼寫錯誤。應該是0或更多 –