有些问题不一定要一次完成,有时候可以增加中间步骤

--start
今天遇到一个说简单不简单,说难不难的问题,问题是这样的,有一个文件,格式如下:

[quote]
1109,2009/4/15,15:51,当社,その他,振込,"25万入金。(03)9月、10月分充当、(02)2月不足分、
3月分、4月利息一部に充当 "
442,2009/4/15,17:41,自宅,本人,電話架,"留守電に16日か17日のどちらに来社されるか絡くれと入れる。 "
1109,2009/4/16,12:36,当社,本人,来社,"(阿部さん同席)納税金は10月までに分割で払うつもりでいる延滞し
11月の更新もできません。そうした場合、何かえありますか?一番いい方法はありますか?ご家族に相談して
1109,2009/4/27,9:09,当社,本人,電話受,"5月1日に延滞分と、あと差押分も払予定です。金に関しては、銀行
555,2009/4/27,10:03,当社,本人,電話受,"FAX受け取りました。5月分はまた別でいいですか?連休明け
1109,2009/4/28,10:03,自宅,本人,文書送達,"ライフ住宅ローンから融資検討可の返事がたので、事前相談表
333,2009/4/28,12:08,自宅,本人,文書送達,見えにくいので郵送してくれとのこと。
1109,2009/4/30,16:12,当社,本人,電話受,"入金確認しました。税金滞納分も払いました。FAXした方がい
1109,2009/4/30,16:21,当社,本人,文書受領,"納付書確認。途電話あり。帯債務者の件は、GW明けにまた連絡
1109,2009/5/7,9:38,当社,本人,電話受,"今日入金しますとの連絡。社の件はもう少し待ってほしいとのこと
1109,2009/6/16,9:22,当社,本人,電話受,"今週中に290万ぐらいいれて、残高を500万ぐらいにますとのこと。
500万になったら返済はどうなるか折り返し電話る。 "
333,2009/6/16,13:15,当社,本人,電話受,"書面見ました。大体わかりましたので、検討してた連絡しますと
1109,2009/6/18,17:41,当社,その他,振込,"992,453円入金あり。
100万口完済。消の件、書面自宅にファックス。 "
344,2009/6/19,16:54,当社,本人,電話受,"今日も入金確認してますか?今日は入ってません。息子さんが入
[/quote]


文件大约有几万行,现在要求你把类似第2,5,14,17行提升到上一行。我使用的文本编辑器是 EmEditor,如果要查询正常的行则非常简单,只要查询以若干个数字开头,后接一个逗号的行,使用如下正则表达式:[b]^\d+[/b],如果要查询不正常的行,我想使用如下的正则表达式应该可以:[b]^[^\d+,][/b] 然而却不行,后来我想是不是因为缺少括号,于是如下的正则表示式:[b]^[^(\d+,)][/b] 结果还是不行,琢磨了半天也没写出这个正则表达式到底该怎么写,没有办法,只好请教我们部长,就在我给他陈述这个问题的时候,我突然明白,之所以没有找出不正常的行是因为它们也是以数字开头,正常的行也是以数字开头,既然我们能找出正常的行,我们可以给正常的行加个前缀,让它不以数字开头不就可以了吗?整个过程如下:

--[b]第一步:目的是给正常的行加前缀,让它们不以数字开头[/b]
[quote]
Find:^(\d+,)
Replace with:GGGG\1
[/quote]
--[b]第二步:把不正常的行提升到上一行[/b]
[quote]
Find:\n(\d)
Replace with:\1
[/quote]
--[b]第三步:把正常的行前缀去掉[/b]
[quote]
Find:^GGGG
Replace with:
[/quote]

后来,我们部长提供了另一种解决方案,如下:
--[b]第一步:给正常的行加前缀,目的是表示换行位置[/b]
[quote]
Find:^(\d+,)
Replace with:GGGG\1
[/quote]
--[b]第二步:把所有的换行符都替换了[/b]
[quote]
Find:\n
Replace with:
[/quote]
--[b]第三步:把第一步加的前缀替换成换行符[/b]
[quote]
Find:GGGG
Replace with:\n
[/quote]


无论哪种解决方案,都增加了中间步骤,最开始我就想一步达到目的,所以想了好半天也没想出这个表达式该怎么写。通过这个案例,给我的思考是:发现问题的真正所在,有时候不一定要一次达到目的,可以增加中间目标,一步一步实现。当然,哪位朋友有更好的解决方案,请一定要告诉我。


--[b]声明:转载请注明出处。[/b]
--last updated 2009.11.25
--written by wave at 2009.11.25
--end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值