我想解析下面的字符串,但我似乎無法弄清楚如何使用正則表達式否定詞。我有以下短信歷史記錄。正面循環解析與負面的單詞預測
string = '2014-03-29 10:29:24 AM: John Doe: Hey dude how are you feeling 2014-03-29 10:30:39 AM: Billy: Hey Doe, Im feeling better now. 2014-03-29 10:30:58 AM: Billy: Yup'
我正則表達式的紅寶石查詢目前看起來是這樣的:
string.scan(/((\d{4}-\d{2}-\d{2}\s+\d{2}\:\d{2}\:\d{2}\s+[AP][M])\:\s(.*?)\:\s([^\d{4}]*))/) {|match| puts match}
Output:
2014-03-29 10:29:24 AM: John Doe: Hey dude how are you feeling
2014-03-29 10:29:24 AM
John Doe
Hey dude how are you feeling
2014-03-29 10:30:39 AM: Billy: Hey Doe, Im feeling better now.
2014-03-29 10:30:39 AM
Hason
Hey Doe, Im feeling better now.
2014-03-29 10:30:58 AM: Billy: Yup
2014-03-29 10:30:58 AM
Billy
Yup
問題
我正則表達式否定僅供字符,而不是單詞。 [^ \ d {4}]只在檢測到任何數字而不是像'2014'這樣的詞時停止。