如何按条件移动文档中指定列内容

关注本专栏,让您不写或少写代码就能解决日常生活中遇到的各种挠头的难题!!

网友提问:

我有这样一个文档:

图片

想要根据性别转成下述文档:

图片

文档内容较多,请帮忙解决这个问题,谢谢老师!!

红叶解答:

1.先替换第一行标题

图片

2.查找到所有性别是【女】的行

a)简单表达式

使用正则表达式【.*女】可以快速查找到,但这么简单的表达式会对后续替换造成影响。

图片

我们看这一行包含了姓名、制表符tab1、手机号、制表符tab2、性别。姓名和手机号将来是要拆出来放到新位置上去的,如果使用【.*】,姓名和手机号无法从匹配到的字符串中分离出来。

图片

b)表达式1

可以使用【(.+)\s*(\d{11})\s*女】进行匹配,这里的【\s】表示一个空白字符(空格,换行或tab键)。【\s*】表示空白字符有0个或多个。完整的意思是多个任意字符(作为姓名,保存到1号存储箱里备用),后面跟着0或多个制表符,之面跟着11位数字的手机号码(作为手机号,保存到2号存储箱里备用),然后跟着0或多个制表符,最后跟着固定的字符【女】。

图片

可能您会问:为什么上面的表达式不用【\s+】而用【\s*】,空白字符不是至少有一个吗?看了下面的图您就会明白了。

图片

c)验证表达式1

在【替换为】中输入【a$1$2b】,执行【全部替换】,会发现取到的姓名后有空格,证明标准表达式写的并不准确,这是为什么呢?

图片

这里有个正则表达式的贪婪匹配问题,【.+】可以匹配“黄蓉”,也可以匹配“黄蓉<空格< span="">>”,也可以匹配“黄蓉<空格< span="">><< span="">空格>”,… … 如果不关闭贪婪匹配,会匹配姓名+手机号前的所有空格。

d)关闭贪婪匹配模式

在【查找目标】中输入【(.+?)\s*(\d{11})\s*女】,在【替换为】中输入【a$1$2b】,执行【全部替换】,发现姓名的空格已经不见了。

图片

关闭贪婪匹配模式很简单,就是在【.+】后面加个问号。

3.重新调整性别是【女】的行

在【替换为】中输入【\t\t\t\t\t\t\t$2\t\t\t$1】,执行【全部替换】,会发现性别是女的行已调整完成。

【\t】表示制表符,【$2】、【$1】表示从2号、1号存储箱中取回内容。

图片

注意:【替换为】中不支持正则表达式,所以在此框中如输入【\t{7}】、【\s】等正则表达式将不会起作用。\r,\n,\t等扩展字符不属于正则表达式中的元素。

4.删除性别是【男】的行中的性别列

在【查找目标】中输入【(.+?)\s*男】,在【替换为】中输入【$1】,执行【全部替换】。

【.+?】匹配“郭靖    13000000000”并存进1号存储箱,【\s*】匹配“男”前面的所有空白字符。

下图是最终处理后的结果。

图片

觉得不错的小伙伴记得转发关注哦,后续会持续更新相关技术文章!

如果您遇到业务处理相关的技术难题,欢迎留言,我会尽力解答!!

图片

为您推荐

移除大文档中多余的口头禅

移除大文档中非必要的换行符

找出大文档中的所有手机号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值