jchang 发表于 2008-11-22 11:39:01

文本处理问题请教

有类似如下的文本:
aabbcd
bdcg
dfdfdfdf10
   10 abc
    bdcg
   12 df
    dfdfdfdf10
   ABC
   def
    fh
现要求在文本中提取第一次出现以数字(也可能是空白+数字)开头的行到出现有ABC字母之间的所有行:
   10 abc
    bdcg
   12 df
    dfdfdfdf10
请问应如何做呢?

[ 本帖最后由 jchang 于 2008-11-24 12:37 编辑 ]

netegg 发表于 2008-11-22 12:59:15

再说明白点

liongodmien 发表于 2008-11-22 13:44:01


$i = 1
Do
$fileline = FileReadLine('1.txt', $i)
If @error = -1 Then Exit
$T = stringregexp($fileline, '^[ *\d*].+', 2, 1)
If @error = 0 Then MsgBox(0,'',$T)
$i += 1
Until 0

jchang 发表于 2008-11-22 22:53:34

可能原来没讲清楚,现换种方式说一下,就是在一个文本文档中取出指定的几行,取出的几行第一行是数字开头的行,也是文本中最先出现以数字开头的行,最末一行是ABC, 例子一:
dfdfdfdf10
10 abc
    bdcg
    ......
   12 df
    dfdfdfdf10
   ABC
def
取出的行为:
10 abc
    bdcg
    ......
   12 df
    dfdfdfdf10
   ABC

例子二:
bdcg
abc34333df
12 dcef
   ......
   12 dc
   ABC
def
fh
取出的几行为:
12 dcef
   ......
   12 dc
   ABC
不知说清楚了没有,请大家指教

[ 本帖最后由 jchang 于 2008-11-22 23:14 编辑 ]

sbyguli 发表于 2008-11-22 23:55:47

每行读取,然后用正则匹配出现数字的第一行,记录下这一行的行号,再往下用正则匹配出现数字的行,出现匹配行就记下行号,然后用正则匹配下一行是不是ABC?如果是,就重新读取第一次出现的行号,把这一行往下的都写入文件里;如果不是,就从判断不是ABC的上一行开始往下匹配数字,直到出现下一个数字,判断是不是ABC,重复就行啦!

上面这个是最笨的办法,啦啦!

好办法当然是用正则直接分,可惜偶不会~

jchang 发表于 2008-11-23 22:02:56

楼上说的对我来说有几个难点,第一个是查找以数字开头的行,这个我用正则表达式可以完成,但是如何查找出现数字的第一行呢?又如何记下行号呢?我有如下的代码,但是只能查找以数字开头的行:
$file2 = FileOpen("test.txt", 0)
If $file2 = -1 Then
        MsgBox(0, "错误", "不能打开文件.")
        Exit
EndIf
$i=1
While 1
        $line2 = FileReadLine($file2)
        If @error = -1 Then ExitLoop
      $T = stringregexp($line2, '^[\d*].*', 2, 1)
      If @error = 0 Then MsgBox(0,'',$T)
Wend

juyz 发表于 2008-11-23 22:54:28

$file2 = FileOpen("test.txt", 0)
If $file2 = -1 Then
MsgBox(0, "错误", "不能打开文件.")
Exit
EndIf
$i=1
While 1
$line2 = FileRead($file2)
If @error = -1 Then ExitLoop
$T = stringregexp($line2, '\d+(.*\s*)+ABC', 2)
If @errorThen
MsgBox(0,'',"X")
Else
        MsgBox(0,'',$T)
EndIf
Wend

juyz 发表于 2008-11-24 07:17:25

;more exactly
stringregexp($line2, '\r\s*(\d+)(.*\s*)+?ABC\s*\r', 2)

jchang 发表于 2008-11-24 12:37:01

多谢,已能满足要求
页: [1]
查看完整版本: 文本处理问题请教