2012-04-15 74 views
0

我試圖找到前景搜索一個正則表達式,我找了分組模式來處理這個尋找一個正則表達式模式鍵:值對

from:Jack subject:(sending invoice) title:ibm 

我用這個模式,但我不明白首字的話

(?<name>\\w+):[(](?<value>\\w*)[)]* 
+1

你能更清楚你想用你的正則表達式實現什麼嗎? – lukkea 2012-04-15 07:10:21

回答

1

\w不處理的空間,改變你的正則表達式:

(?<name>\\w+):[(](?<value>[^)]*)[)] 

[^)]*表示0個或多個不正確的字符parens。

也許你更喜歡使用[^)]+這意味着一個或多個字符是不正確的parens。

如果括號是可選的,使用方法:

(?<name>\\w+):[(]?(?<value>[^)]+)[)]? 
+0

謝謝,這工作。當只有一個字的值時,我如何使括號可選:from:Jack – user1334070 2012-04-15 20:47:25

+0

@ user1334070:使用量詞'?'使它們可選,請參閱我的編輯。 – Toto 2012-04-16 07:44:27

0

在 '價值' 的第一支架是不是在你的正則表達式可選

來自:傑克主題:(發送發票)標題:IBM

至於空格,我會做這種方式,因爲括號內是不存在於每個鍵值對無論如何:

(?<name>\\w+):[(]*(?<value>(?:\\w|\\s)+)[)]* 

但是,看起來這個值是一個單詞或一串單詞,但在括號內 - 讓我們重新編寫正則表達式,否則您將在':'之後得到第一個值:

(?<name>\\w+):(?:(?<value>\\w+)|(?:\\((?<value>(?:\\w|\\s)+)))