找回密码
 加入
搜索
查看: 2838|回复: 9

[AU3基础] 求正则读取指定文件内容(已解决)

  [复制链接]
发表于 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)
 楼主| 发表于 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

没理解你的意思!
 楼主| 发表于 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,岁替换为“.”

目前还没想到更好的办法,期待更有效的表达式。
 楼主| 发表于 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)
发表于 2011-10-29 08:08:54 | 显示全部楼层
1岁不是1年么, 1年不是12个月么....
 楼主| 发表于 2011-10-29 08:14:56 | 显示全部楼层
回复 8# 水木子

虽然没有达到预期目的,但思路已经明确。
再次谢谢水木子版主耐心回复!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-6 07:15 , Processed in 0.077404 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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