2008-12-03 58 views
2

我在正則表達式的表達式字符串分割到項目

[1/12/2008 2:32:11 p.m. - name] 
line 1 
[1/12/2008 2:36:00 p.m. - name] - PRIVATE 
line 2 [some text] sd 
[1/12/2008 2:36:00 p.m. - name] 
line 3 

形式有文字,我想分成項目,使我有機會獲得時間,名稱和每個項目的文本,

e.g.: 
(item 1) 
    1: 1/12/2008 2:32:11 p.m. 
    2: name 
    3: line 1 
(item 2) 
    1: 1/12/2008 2:36:00 p.m. 
    2: name 
    3: - PRIVATE 
    line 2 [some text] sd 
(item 3) 
    1: 1/12/2008 2:36:00 p.m. 
    2: name 
    3: line 3 

我試圖拿出一個單一的正則表達式來實現這一點,但沒有運氣:

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?:\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\]) 

這種模式上方ly返回第一個項目。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+?)(?!\[[0-9\/ \:\.apm]+? - [a-z_\-0-9]+?\]) 

上述返回模式的所有項目,但文本的唯一第一字符(組3)

任何建議?

回答

4

它看起來像你得到你想要的。

\[([0-9\/ \:\.apm]+?) - ([a-z_\-0-9]+?)\](.*?\r\n.+.*?) 

我測試了它在my RegEx tester,它似乎得到正確的格式。

+0

謝謝,我試過你的例子,我最初沒有工作。然後事實證明,「單線」正則表達式選項導致它不起作用。刪除「單行」選項解決了它。 – Muxa 2008-12-03 01:42:43