使用vim regexp清除文件中的前导零
我有一个包含16位十六进制数的文件。数字类似于使用vim regexp清除文件中的前导零,regex,vim,Regex,Vim,我有一个包含16位十六进制数的文件。数字类似于0000、fa01、00f10001等。我想删除前导的0,这样我只剩下一些数字,例如0000应该更改为just0,0001应该更改为1,而0应该保持不变 我正在尝试使用这样的regexp%s/^0\+\(0$\)\@//。如果有这样的数字000,则保留一行空白。有没有关于如何修复此问题的建议?可能是这样的: :0,$ s/0\+\([0-9a-f]\)/\1/ 任意数量的零,但至少保留一个数字。。。如果没有g标志,它最多每行执行一次 当然,如果十六
0000、fa01、00f10001
等。我想删除前导的0,这样我只剩下一些数字,例如0000
应该更改为just0
,0001
应该更改为1
,而0
应该保持不变
我正在尝试使用这样的regexp
%s/^0\+\(0$\)\@//代码>。如果有这样的数字000
,则保留一行空白。有没有关于如何修复此问题的建议?可能是这样的:
:0,$ s/0\+\([0-9a-f]\)/\1/
任意数量的零,但至少保留一个数字。。。如果没有g
标志,它最多每行执行一次
当然,如果十六进制中有大写字母,也可以使用A-F
更新:
\(0$\)\@代码>表示匹配行上的最后一个零,然后将其否定,使其为false(希望如此)
但是,仔细观察表达式,0\+
中取零,然后0$
返回false,\@代码>否定了这一点!因此,这是一场比赛。因此,我认为您的表达式工作正常,除了所有零表达式。您提供的解决方案工作正常。谢谢顺便问一下,你能告诉我为什么我以前使用的regexp是%s/^0\+\(0$\)\@//代码>不工作?