【发布时间】:2014-04-03 16:51:06
【问题描述】:
我正在尝试解析以下字符串,但我似乎无法弄清楚如何对单词使用正则表达式否定。我有以下短信历史记录。
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'
我的正则表达式 ruby 查询目前如下所示:
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”之类的单词时才会停止。
【问题讨论】:
标签: regex parsing regex-negation