找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29686|回复: 6

[文本处理] 【已解决】批处理如何提取网页中的关键字和代码?

[复制链接]
发表于 2013-5-28 11:38:17 | 显示全部楼层 |阅读模式
  1. <a href="#1000000">第一篇 刑法</a><br><br>
  2.  <a href="#1100000">一、总则</a><br>
  3.   <a href="#1101000">(一)总类</a><br>
  4.    <a href="#1101010">1、刑法与修正案</a><br>
  5.    <a href="#1101020">2、与刑法相关法</a><br>
  6.    <a href="#1101030">3、立法解释及相关</a><br>
  7.    <a href="#1101040">4、罪名相关</a><br>
  8.    <a href="#1101050">5、刑法溯及力</a><br>
  9.   <a href="#1102000">(二)犯罪</a><br>
  10.    <a href="#1102010">1、犯罪和刑事责任</a><br>
  11.     <a href="#1102011">1)未成年人犯罪</a><br>
  12.     <a href="#1102012">2)国家工作人员犯罪</a><br>
  13.     <a href="#1102013">3)其他特殊主体犯罪</a><br>
  14.     <a href="#1102014">4)其他</a><br>
  15.    <a href="#1102020">2、犯罪的预备、未遂和中止</a><br>
  16.    <a href="#1102030">3、共同犯罪</a><br>
  17.    <a href="#1102040">4、单位犯罪</a><br>
复制代码
希望生成的文本:
  1. 1000000_第一篇 刑法
  2. 1100000_一、总则
  3. 1101000_(一)总类
  4. 1101010_1、刑法与修正案
  5. 1101020_2、与刑法相关法
  6. 1101030_3、立法解释及相关
  7. 1101040_4、罪名相关
  8. 1101050_5、刑法溯及力
  9. 1102000_(二)犯罪
  10. 1102010_1、犯罪和刑事责任
  11. 1102011_1)未成年人犯罪
  12. 1102012_2)国家工作人员犯罪
  13. 1102013_3)其他特殊主体犯罪
  14. 1102014_4)其他
  15. 1102020_2、犯罪的预备、未遂和中止
  16. 1102030_3、共同犯罪
  17. 1102040_4、单位犯罪
复制代码
我的代码:
  1. @echo off
  2. set file=%~snx1
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%i in (%file%) do (
  5.         set t=%%i
  6.         set t=!t:^<a href^=^"^#=!
  7.         set t=!t: =!
  8.         set t=!t:^"^>=_!
  9.         set t=!t:^</a^>^<br^>=!
  10.         set t=!t:^<br^>=!
  11.         echo !t!
  12. ))>N%file%
  13. endlocal
复制代码
但运行后出错了!其情形如下:
  1. "#=="#1000000_第一篇 刑法
  2. "#=="#1100000_一、总则
  3. "#=="#1101000_(一)总类
  4. "#=="#1101010_1、刑法与修正案
  5. "#=="#1101020_2、与刑法相关法
  6. "#=="#1101030_3、立法解释及相关
  7. "#=="#1101040_4、罪名相关
  8. "#=="#1101050_5、刑法溯及力
  9. "#=="#1102000_(二)犯罪
  10. "#=="#1102010_1、犯罪和刑事责任
  11. "#=="#1102011_1)未成年人犯罪
  12. "#=="#1102012_2)国家工作人员犯罪
  13. "#=="#1102013_3)其他特殊主体犯罪
  14. "#=="#1102014_4)其他
  15. "#=="#1102020_2、犯罪的预备、未遂和中止
  16. "#=="#1102030_3、共同犯罪
  17. "#=="#1102040_4、单位犯罪
复制代码
问题:
1、"#=这三种特殊符号如何用转义符号?
2、不用替换法,如何提取网页中的关键字和代码?
3、DOS如何定位查找的字符?
问题有点多,希望高手们能指点指点,谢谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-5-28 12:10:59 | 显示全部楼层
  1. sed -n -r "s/^\s*<a href=\x22#([^\x22]+)\x22>([^<]+)<.*$/\1_\2/p" a.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2013-5-28 12:17:14 | 显示全部楼层
  1. for /f "tokens=2-3 delims=<=> " %%a in (%file%) do (
  2.     for /f "tokens=* delims=#" %%i in ("%%~a_%%b") do @echo %%i
  3. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-5-28 12:26:05 | 显示全部楼层
本帖最后由 pan528 于 2013-5-28 12:39 编辑

回复 3# terse

高手!学习了!没有想到delims不需转义。谢谢!

但,我没有看懂“delims=<=> ”,为什么最后放上一个全角的空格?

能否指教?
发表于 2013-5-28 12:49:49 | 显示全部楼层
回复 4# pan528
行首字符啊
 楼主| 发表于 2013-5-30 14:42:52 | 显示全部楼层
遗憾啦,没有人回答另二个问题:
1、"#=这三种特殊符号如何用转义符号?
3、DOS如何定位查找的字符?
 楼主| 发表于 2013-7-19 18:53:35 | 显示全部楼层
上述两个问题好久没有人回,只好另设题目探讨了。不过本题可以结了,再次谢谢回贴的热心高手!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 00:20 , Processed in 0.020240 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表