如何使用Unix正则表达式将数字与字母分开?

3
如何使用Unix正则表达式将数字与字母分开?
示例:133748414T 我尝试了这个:
%s/^[0-9][0-9]*/^I/g

谢谢


预期结果是什么? - Wiktor Stribiżew
谢谢!我想从T中分离出133748414,而且T是由制表符分隔的。 - sara jones
1
Try %s/\v(\d)@<=(\D)@=/\t/g - Wiktor Stribiżew
太好了!这个可行。非常感谢你。 - sara jones
Sara,请考虑接受/点赞我的答案,因为它对您有用。 - Wiktor Stribiżew
2个回答

1

您可以使用

%s/\v(\d)@<=(\D)@=/\t/g

在这里,

  • \v - 启用非常魔法模式
  • (\d)@<= - 当前位置左侧紧邻的位置应该是数字
  • (\D)@= - 当前位置右侧紧邻的位置应该是非数字字符
  • \t - 替换为TAB字符
  • g - 替换所有出现的情况。

如果您还需要在非数字和数字之间添加制表符,请使用

%s/\v(\d)@<=(\D)@=|(\D)@<=(\d)@=/\t/g
< p > (\D)@<=(\d)@= 替代分支模式的构建方式与前一个类似。


0
如果它始终以数字开头:
%s/\ze\D/\t

我的建议是::%s/\D/\t& - SergioAraujo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接