我有一个参差不齐的.pip,管道分隔,引用限定的平面文件,包含3列。记录结束分隔符是回车换行({CR} {LF})。示例文件是:
String numericKeyValue = jp.getText()
我需要删除last(3rd)列中的文本,包括其列分隔符。所以,我希望上面的示例文件显示为:
x|stuff|zz {CR}{LF}
ab|"some|thing"|"els|e" {CR}{LF}
"wh|at"|text|b {CR}{LF}
我想在Notepad ++中使用正则表达式find-replace。我的正则表达式(找到)应该是什么?我知道有一个类似的帖子(Regular expression to remove the last column from a pipe delimited file),但它似乎对我的情况不起作用。
答案 0 :(得分:1)
您的搜索模式可以通过文字管道(必须转义)构建,然后是零或更多非管道字符(贪婪)并锚定在行尾。但我发现有些字段可能包含带管道的引用值。所以你需要在单独的比赛中处理这些。试试这个:
\|("[^"]*"|[^|]*)$
我刚刚在您的示例数据集上测试了此模式并确认它有效。您是否有任何带引号字符的引用值需要转义?如果是这样,他们是如何逃脱的?有一个领先的报价?用反斜杠?也许最好使用CSV解析器而不是正则表达式,如果你在最后一列中有任何引用的数据,里面有文字引号。