2017-09-14 30 views
0

我有以下sourceString中提取鍵值對管之間的一切

|User=gmailUser1|login with password=false|addition information=|source IP location=DE| 

我想提取的鍵值對管之間的一切。在這種情況下

  1. 用戶= gmailUser1
  2. 登錄,密碼=假
  3. 附加信息=
  4. 源IP位置= DE

我的正則表達式是給我的整個字符串。

\|(\b+)=(\b+)\| 
+0

你應該在管道上標記,而不是在它們之間。你在做什麼語言? –

+0

我正在嘗試使用vbs – user8611198

+0

評論用於提出問題以澄清問題。像這樣的細節應該是問題的主體。假定它存在,您還應該使用VBScript標記。 – jdv

回答

1

嘗試與表達:

/\|([^=|]+)=([^|]*)/g 

,或者如果你只是想要一個模式:

\|([^=|]+)=([^|]*) 

根據你的環境,你將能夠獲得第1組和2捕獲爲每個鍵值對。

(我不能現在來測試它。)

更新1:我做了一個簡短的測試,並與Wiktor的Stribizew優化適應它。

更新2:使用正則表達式的簡短的說明:

\b在你的模式意味着字邊界和不represend的標誌。您不能將其與+結合使用。另見What is a word boudary

第一組([^=|]+)匹配任何不是=|至少有一個字符。

第二組([^|]*)匹配任何不是=的零個或多個字符(addition information具有空值)。

0

嘗試這種情況:

\w+(=|\s|\w+)

此匹配:

\w+ = numletter字符和匹配組

(=|\s|\w+) =一個=唱歌,空白空間或另一numletter組