Board logo

标题: [文本处理] [已解决]如何从文本中提取需要的文本内容? [打印本页]

作者: local    时间: 2009-7-21 09:57     标题: [已解决]如何从文本中提取需要的文本内容?

请教个问题,有一文本,文本内容被连续的中括号隔开(中括号中也有文本信息),文本如下
[test:\]
*****
*****
*****
[\]
*****
*****
[test:\1]
*****

*****代替具体的文本内容,请问有什么方法可以提取两个连续中括号之间的文本信息?先谢谢各位了.

[ 本帖最后由 local 于 2009-7-21 23:26 编辑 ]
作者: terse    时间: 2009-7-21 10:44

这样呢   eol=[
作者: batman    时间: 2009-7-21 11:02

不明白楼主要提取的是哪一部分内容如下:
[a]
b
[c]
d
[e]
f
[g]
是a c e g?还是b d f?还是b f?
作者: Lumiere    时间: 2009-7-21 12:02

  1. @echo off
  2. for /f "eol=- delims=" %%a in ('find /v "[" target.txt')do echo %%a>>resolution.txt
  3. pause
复制代码
target是目标文本,resolution是生成的要的文件。自己换一下就好。

[ 本帖最后由 Lumiere 于 2009-7-21 12:22 编辑 ]
作者: Lumiere    时间: 2009-7-21 12:22

  1. @echo off
  2. for /f "eol=[ delims=" %%a in (target.txt) do echo %%a>>resolution.txt
  3. pause>nul
复制代码
上面多次一举了,这个就可以。

[ 本帖最后由 Lumiere 于 2009-7-21 12:24 编辑 ]
作者: local    时间: 2009-7-21 14:46

谢谢各位的解答。
还想问一下,如果以中括号内的内容作为判断条件,只提取相应中括号下面的文本信息,这样的话又要怎样实现呢?
作者: Lumiere    时间: 2009-7-21 17:21     标题: 回复 6楼 的帖子

  1. echo off&setlocal enabledelayedexpansion
  2. set var=\
  3. set /a count=0
  4. findstr /n "[" target.txt>>num.txt
  5. for /f "tokens=1-2 delims=[]" %%a in (num.txt) do (
  6.     set /a count+=1
  7.     if "%%b"=="!var!" set /a cal=0, skip=count,num=%%a 2>nul
  8. )
  9. for /f "skip=%skip% delims=" %%a in (num.txt) do set /a num2=%%a 2>nul
  10. for /f "skip=%num% delims=" %%i in (target.txt) do (
  11.     echo %%i>>result.txt&set /a cal+=1,comp=cal+num+1
  12.     if !comp! equ !num2! echo 您要的内容已成功提取!&goto end
  13. )
  14. :end
  15. pause>nul
复制代码

作者: Lumiere    时间: 2009-7-21 17:22

上面的代码以你帖子中第二个中括号[\]为参照,提取其下所有在下一个中括号之前的内容
作者: local    时间: 2009-7-21 23:22

功能实现,谢谢Lumiere了!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2