我有一个大文本文件,其中包含TextWrangler中的一些注释,我想用Regex解析并将匹配写入CSV文件以进行MySQL导入。以下是一个示例来源:
ARCHIVE
02.09.2014 22:35
title1
content
content
content
content
30.08.2014 18:13
title2
content
content with tab
content with tab
content
...
more notes as above
...
每个音符都以返回包围的日期开头,然后是标题和一些内容行。我目前正在TW查找对话框中使用以下Regex进行测试,并选中Grep以获取每个注释的日期,标题和内容块:
\r(\d\d\.\d\d\.\d\d\d\d \d\d:\d\d)\s*\r\r(.+)(?s)((?:(?!\r\d\d\.\d\d\.\d\d\d\d \d\d:\d\d\s*\r).)*)
这样做的目的是查找返回包围的日期,然后捕获标题行,最后所有行都提供不会遇到另一个日期块。后者使用非捕获负向前瞻。在最后一步之前,使用(?s)
启用DOTALL设置,包括点元字符的返回。
使用查找上方的示例源为第一个音符而不是第二个音符,其中一些行使用制表符缩进。 TW显示此错误:
这就是我被困的地方。谁能给我一个提示?
答案 0 :(得分:0)
我对模式进行了更多测试,发现Regex / Grep失败实际上是不可预测的。
它似乎与源中的选项卡有关,但可能还有其他文本触发了该错误。例如,我发现当添加网址时,包含标签的工作“注释”部分开始失败。
我正在使用从Snow Leopard更新的Mavericks 10.9.4上的TextWrangler 3.5.3。我在Apple Mail和其他应用程序中也遇到过很多关于这个系统的模糊问题,所以我认为TW bug可能与Mavericks问题有关。我使用旧版TW的原因是我不喜欢左边的侧边栏。
正如我在评论中所说的那样,对于使用BBedit / TW的Grep问题还有其他问题,这些问题似乎不是来自PCRE Regex引擎,而是来自BBedit代码。当然,SO无能为力。
答案 1 :(得分:0)
不允许发表评论,我已回答' ...
可能
\r(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2})\s*\r\r(.+\r)((.+\r)+)(?!\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}\s*\r)
确实符合您的目的(在10.3.4的TW 3.5.3中。除了领先/尾随换行符(当然,如果实际需要可以添加),在TW 4.5.9中它的捕获似乎是与你的相同)。