fuldho 发表于 2011-10-28 12:22:07

求正则读取指定文件内容(已解决)

本帖最后由 fuldho 于 2011-10-29 08:15 编辑

d.ini
[年龄]
1=职工25岁2个月
2=职工35岁3个月
3=职工45岁4个月
3=职工55岁5个月
要求读取为:
25.2
35.3
45.4
55.5

#include <Array.au3>
$fini = FileRead('d.ini')
$aRe = StringRegExp($fini, '职工([^\r]+)', 3)
$aNewArray = _ArrayUnique($aRe)
_ArrayDisplay($aNewArray)

水木子 发表于 2011-10-28 12:42:24

本帖最后由 水木子 于 2011-10-28 13:02 编辑

时间不够了,表达式还有问题。

$fini = FileRead('d.ini')
$aRe = StringRegExpReplace($fini, '\d+=[^\d]+(\d+)(?!=).(\d+)[^\r]+', '$1.$2')
MsgBox(0, '', $aRe)

fuldho 发表于 2011-10-28 13:34:21

本帖最后由 fuldho 于 2011-10-28 13:35 编辑

回复 2# 水木子


    谢谢水木子版主!
再问一下:假如文本下有不符合规定的填写怎样剃出?
如:
6=65岁半   ;不符合规定

StringRegExp($fini, '职工([^\r]+)', 3)    ;用这句可以

水木子 发表于 2011-10-28 13:39:58

回复 3# fuldho

没理解你的意思!

fuldho 发表于 2011-10-28 14:42:17

本帖最后由 fuldho 于 2011-10-28 14:48 编辑

回复 4# 水木子

假如 d.ini文件如下:
   
[年龄]
1=职工25岁2个月
2=职工35岁3个月
3=职工45岁4个月
4=职工55岁5个月
5=65岁半   ;不符合规定

第5行不符合规定不读取
完成:
25.2
35.3
45.4
55.5

也就是说不是“职工”打头的不读取。

水木子 发表于 2011-10-28 15:13:38

回复 5# fuldho

看来只能一步一步的处理了,先将“半”替换为5,岁替换为“.”

目前还没想到更好的办法,期待更有效的表达式。

fuldho 发表于 2011-10-28 15:21:24

本帖最后由 fuldho 于 2011-10-28 15:23 编辑

回复 6# 水木子


谢谢版主耐心详细的解释!
谢谢了!

我的意思是“5=65岁半”这样句不符合规定就不读取了,
只读取“职工”打头的。

完成后:
25.2
35.3
45.4
55.5

就没有“5=65岁半”这句了。

水木子 发表于 2011-10-28 16:09:46

本帖最后由 水木子 于 2011-10-28 16:21 编辑

回复 7# fuldho

原来是这样啊!那就简单了。
将表达式换成:\d+\=[^职工]+|\d+\=|[^\d+\r\n岁]+

$sText = FileRead('d.ini')
$sRer = StringRegExpReplace($sText, '\d+\=[^职工]+|\d+\=|[^\d+\r\n岁]+', '')
$sRer = StringRegExpReplace($sRer, '岁', '.')
MsgBox(0, '', $sRer)

runtium 发表于 2011-10-29 08:08:54

1岁不是1年么, 1年不是12个月么....

fuldho 发表于 2011-10-29 08:14:56

回复 8# 水木子

虽然没有达到预期目的,但思路已经明确。
再次谢谢水木子版主耐心回复!
页: [1]
查看完整版本: 求正则读取指定文件内容(已解决)