[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理正则表达式怎样替换第二个指定字符?

1章  何谓线性代数 第9
              1.线性代数 第14
              2.研究要点和考试要点 第21
              3.数学家眼中的线性代数 第22
               3.1数学家眼中的线性代数 第2
               3.2线性代数和公理 第24
             第2章  基础知识 第25

用一正则表达式可以将上面的文本中第二个的“第”替换成空格或者删掉。

1章  何谓线性代数 9
              1.线性代数 14
              2.研究要点和考试要点 21
              3.数学家眼中的线性代数 22
               3.1数学家眼中的线性代数 2
               3.2线性代数和公理 24
             第2章  基础知识 25

[ 本帖最后由 qunwang6 于 2011-2-11 20:07 编辑 ]

抱歉刚才以为没发上,后来发现发重了

TOP

不用正则也可

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "v=%%i"
  4.     set "v=!v:第=!"
  5.     for /f "tokens=* delims= " %%i in ("!v!") do (
  6.         set "s=%%i"
  7.         set "s2=!s:~1,1!"
  8.         call set "x=%%v:!s!=%%"
  9.         if !s2! equ 章 (echo !x!第%%i) else echo !x!%%i
  10.     )
  11. )
  12. pause
复制代码

TOP

不用正则和sed也可以

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "v=%%i"
  4.     set "v=!v:第=!"
  5.     for /f "tokens=* delims= " %%i in ("!v!") do (
  6.         set "s=%%i"
  7.         set "s2=!s:~1,1!"
  8.         call set "x=%%v:!s!=%%"
  9.         if !s2! equ 章 (echo !x!第%%i) else echo !x!%%i
  10.     )
  11. )
  12. pause
复制代码

TOP

感谢楼上各位的解答

TOP

回复 12楼 的帖子

哦。在一年前我以为是有还原精灵呢。之后还原卡,后来就是无盘。给我弄得,我都很乱
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

杯具,客场作战

TOP

回复 11楼 的帖子

几个单词就能说清:无盘/还原卡/软件还原
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10楼 的帖子

呵呵,原因么,我想是因为无盘吧。至于细节也非一两句能说清的。有兴趣可以问问网吧的管理
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

findstr启动速度很慢(但是启动之后非常快),运行次数越多效率越低

猜测一下,7楼是在网吧有还原卡?

TOP

回复 8楼 的帖子

因为我都是在网吧弄啊
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 7楼 的帖子

为啥外部的一关机什么都没了?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

只可惜SED的是外部的,一关机什么都没了。不过FINDSTR也有部分正则
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

  1. @echo off
  2. for /f "tokens=1-3 delims=第" %%i in (1.txt) do (echo %%i%%j%%k|findstr "[1-9]*章"&&echo 第%%i%%j%%k>>2.txt||echo %%i%%j%%k >>2.txt)
  3. pause
复制代码
最好将“第N章”放在行的最前面
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

有sed当然最好啦~

TOP

返回列表