标题: [文本处理] 批处理正则表达式怎样替换第二个指定字符? [打印本页]
作者: qunwang6 时间: 2011-2-11 20:06 标题: 批处理正则表达式怎样替换第二个指定字符?
第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 编辑 ]
作者: lxh623 时间: 2011-2-11 20:36
正则表达式懂一点点,但是,我想可以用PdgCntEditor先左对齐,删除“空格+第”,或者删除“页”,再自动切分,再替换“第+制表符”为制表符。最后自动分级。
[ 本帖最后由 lxh623 于 2011-2-11 20:38 编辑 ]
作者: CrLf 时间: 2011-2-11 21:03
笨办法:- @echo off
- for /f "delims=" %%z in (a.txt) do (
- for /f "tokens=1,2* delims=第" %%a in ("@%%z") do (
- for /f "tokens=* delims=@" %%d in ("%%a第%%b%%c") do (
- echo %%d
- )
- )
- )
复制代码
看错题意,不过代码本身也错了一点
[ 本帖最后由 zm900612 于 2011-2-12 01:55 编辑 ]
作者: asnahu 时间: 2011-2-11 22:10
- sed "s/第\([0-9]\+页\)/\1/" urfile
复制代码
作者: CrLf 时间: 2011-2-11 22:12
有sed当然最好啦~
作者: wc726842270 时间: 2011-2-11 22:21
- @echo off
- 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)
- pause
复制代码
最好将“第N章”放在行的最前面
作者: wc726842270 时间: 2011-2-11 22:23
只可惜SED的是外部的,一关机什么都没了。不过FINDSTR也有部分正则
作者: Batcher 时间: 2011-2-11 22:26 标题: 回复 7楼 的帖子
为啥外部的一关机什么都没了?
作者: wc726842270 时间: 2011-2-11 22:28 标题: 回复 8楼 的帖子
因为我都是在网吧弄啊
作者: CrLf 时间: 2011-2-11 22:29
findstr启动速度很慢(但是启动之后非常快),运行次数越多效率越低
猜测一下,7楼是在网吧有还原卡?
作者: wc726842270 时间: 2011-2-11 22:35 标题: 回复 10楼 的帖子
呵呵,原因么,我想是因为无盘吧。至于细节也非一两句能说清的。有兴趣可以问问网吧的管理
作者: Batcher 时间: 2011-2-11 23:01 标题: 回复 11楼 的帖子
几个单词就能说清:无盘/还原卡/软件还原
作者: CrLf 时间: 2011-2-11 23:02
杯具,客场作战
作者: wc726842270 时间: 2011-2-11 23:10 标题: 回复 12楼 的帖子
哦。在一年前我以为是有还原精灵呢。之后还原卡,后来就是无盘。给我弄得,我都很乱
作者: qunwang6 时间: 2011-2-12 01:26
感谢楼上各位的解答
作者: lvsehuaxue 时间: 2011-2-12 10:35 标题: 不用正则和sed也可以
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "v=%%i"
- set "v=!v:第=!"
- for /f "tokens=* delims= " %%i in ("!v!") do (
- set "s=%%i"
- set "s2=!s:~1,1!"
- call set "x=%%v:!s!=%%"
- if !s2! equ 章 (echo !x!第%%i) else echo !x!%%i
- )
- )
- pause
复制代码
作者: lvsehuaxue 时间: 2011-2-12 10:38 标题: 不用正则也可
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "v=%%i"
- set "v=!v:第=!"
- for /f "tokens=* delims= " %%i in ("!v!") do (
- set "s=%%i"
- set "s2=!s:~1,1!"
- call set "x=%%v:!s!=%%"
- if !s2! equ 章 (echo !x!第%%i) else echo !x!%%i
- )
- )
- pause
复制代码
作者: lvsehuaxue 时间: 2011-2-12 10:41
抱歉刚才以为没发上,后来发现发重了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |