我有一个带有地址的大文本文件,我希望将数据拆分为3个变量。例如:
NM_LOGRADO
Street BLA BLA BLA 340
Av BLE BLI 318
Road BLI 48 Block 4
我想转变成:
NM_LOGRADO
Street(TAB)BLA BLA BLA(TAB)340
Av(TAB)BLE BLI(TAB)318
Road(TAB)BLI(TAB)48 Block 4
基本上,用tab选择第一个空格和第一个数字空格前的最后一个空格。
我正在使用Notepad ++,对于第二次替换,我尝试将'(?= [0-9])(?< =)'替换为'(TAB)',但它替换了数字前的所有空格(在第三行中)我得到Road(TAB)BLI(TAB)48 Block(TAB)4
)。对于第一次替换,我不知道:(
答案 0 :(得分:1)
我假设(TAB)引用制表符而不是文字字符串。
查找内容: ^(\w*) ((([A-Z]{3})( )?)+) (\d.*)$
替换为: \1\t\2\t\6
(如果我的假设不正确,请将\t
替换为\(TAB\)
)
关键是不合适的空间:( )?
。这使得前导和尾随空格不会被捕获,因此被制表符替换。
正则表达式的说明:
^
行的开头
(\w*)
任意数量的字母数字字符,即“街道”,“Av”,“道路”
((([A-Z]{3})( )?)+)
3个大写字母,后跟一个不合格的空格,一次或多次,即“BLA BLA BLA”,“BLE BLI”,“BLI”
(\d.*)
一个数字,后跟任意数量的任何字符,即“340”,“318”,“48 Block 4”
$
行尾
\1
第一个捕获组,“(\ w *)”
\t
标签字符
\2
第二个捕获组,“((([A-Z] {3})()?)+)”
\t
标签字符
\6
第六个捕获组,“(\ d。*)”
答案 1 :(得分:1)
转到Search
> Replace
菜单(快捷键 CTRL + H )并执行以下操作:
答案 2 :(得分:0)
当你使用Notpad ++时,最简单的方法是不要打扰正则表达式而是使用宏。只需录制一个并播放直到行尾。你想要: