【问题标题】:How can I preserve line breaks while using regex Windows csv如何在使用正则表达式 Windows csv 时保留换行符
【发布时间】: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


【解决方案1】:

我会尝试以下方法,而不是使用前瞻断言。

(?m)^"[A-Z]+".*2014.*$

【讨论】:

  • 感谢您的建议。我尝试了两种表达方式。这是相同的结果。它们不保留换行符。
  • 我将您的建议与多行模式相结合。以下表达式有效:(?m)^("[A-Z]+".*2014.*)\r\n - 谢谢。
  • 感谢您的绿色勾号,很高兴我能提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 2021-11-16
  • 2023-01-21
  • 2018-02-15
  • 2021-11-27
相关资源
最近更新 更多