【发布时间】:2014-10-05 21:18:37
【问题描述】:
我正在尝试在 Windows 8 机器上使用 Rapidminer 中的正则表达式将与某个字符串匹配的 csv 文件中的行保留。我编写了选择正确行的正则表达式,但输出不保留换行符并显示为连续字符串。对于如何保留换行符的任何建议,我将不胜感激。
我的文件如下所示:
"ABCDEF","text",numbers,"JAN 1, 2014","text",numbers,10
"BCDEFG","text",numbers,"JAN 1, 2014","text",numbers,1
"CDEFGH","text",numbers,"FEB 1, 2014","text",numbers,12
"CDEFGH","text",numbers,"DEC 1, 2013","text",numbers,8
以下正则表达式从正确的行 (1-3) 中选择文本,但消除了输出中的换行符:
"[A-Z]*".*2014.*?(?=[\r\n$]+)
"[A-Z]*".*2014.*?(?=([\r\n]{2}))
"[A-Z]*".*2014.*?(?=([\r\n]{2}[\r\n$]*))
我也尝试了使用以下正则表达式的多行模式,但结果相同:
(?m)^"[A-Z]*".*2014.*?(?=[\r\n]+)$
我的输出如下所示:
"ABCDEF","text",numbers,"JAN 1, 2014","text",numbers,10 "BCDEFG","text",numbers,"JAN 1, 2014","text",numbers,1 "CDEFGH","text",numbers,"FEB 1, 2014","text",numbers,12
提前谢谢你。
编辑:根据 hwnd 和其他人的出色建议,我想出了在 RapidMiner 中有效的以下表达式:(?m)^("[AZ]+".2014.)\r \n
【问题讨论】:
-
不要使用零宽度前瞻断言,只匹配行尾。或者在你加入并写出结果时再次添加换行符。
-
你为什么不直接使用:
("[A-Z].*2014.*) -
费德,谢谢。这个表达式给出了相同的结果。
标签: regex windows csv rapidminer