仅使用带有regex支持的Notepad++,我想从一个表示地理坐标的txt文件中提取一些数据,并像这样组织输出:
-123456789变成-123.456789123456789变成123.456789-23456789变成-23.45678956789变成0.056789-89变成-0.000089尝试过:(-?)([0-9]*)([0-9]{6}),但是当输入小于6位时失败
发布于 2017-08-27 12:04:29
要做到这一点,您需要在notepad++中执行两个步骤。首先,让我们看一下正则表达式:
(?<sign>-?)(?<first>\d+(?=\d{6}))?(?<last>\d+)在组中捕获所需的部分。
说明:(如果愿意,您可能会丢失指定的分组)
(?<sign>-?) # read the '-' sign
(?<first>\d+(?=\d{6}))? # read as many digits as possible,
# leaving 6 digits at the end.
(?<last>\d+) # read the remaining digits.请参阅regex101.com
如何在notepad++中使用这个?使用两步搜索和替换:
(-?)(\d+(?=\d{6}))?(\d+)代之以:
\1(?2\2.:0.)000000\3 # copy sign, if group 2 contains any
# values, copy them, followed by '.'.
# If not show a '0.'
# Print 6 zero's, followed by group 3.接下来,替换多余的零。
\.(0+(?=\d{6}\b))(\d{6}) # Replace the maximum number of zero's
# leaving 6 digits at the end.代之以:
.\2发布于 2017-08-27 12:00:58
您可以通过三个步骤来完成:
(-?)\b(\d{1,6})\b替换为\10000000\2(-?)(\d{0,})(\d{6})替换为\1\2.\30{2,}\.替换为0.这个想法很简单:
最后,输出
-123.456789
123.456789
-23.456789
0.056789
-0.000089检查以下三个步骤:



发布于 2017-08-27 13:00:06
您可以使用一个可用于Python脚本的notepad++插件:
editor.rereplace('(\d+)', lambda m: ('%f' % (float(m.group(1))/1000000)))https://stackoverflow.com/questions/45904494
复制相似问题