找回密码
 加入
搜索
楼主: auto

[AU3基础] 请教CSV的正则处理

 火... [复制链接]
发表于 2012-1-5 23:47:30 | 显示全部楼层
得好好研究研究正则。。
发表于 2012-1-10 21:28:04 | 显示全部楼层
超版就是超版啊,牛叉的很
发表于 2012-1-11 17:55:34 | 显示全部楼层
本帖最后由 binghc 于 2012-1-11 18:05 编辑

回复 7# afan


    看来还是有人记得我啊,不错,哈哈!
一条表达式我也搞不定,不过一行语句我倒是能搞定:
(?<=,|^)(?:"((?:[^"]+|""))"|[^,]*)
要把两双引号转化成一个双引号,又想让代码尽可能的简短,要这么干:


"""",A""AAA,123456,",",12345678901234567890"",0.123456,dddddddddddd,,",,"

#include<array.au3>
$a=StringRegExp(StringRegExpReplace(ClipGet(),'""(?!")','"'),'(?<=,|^)(?:"((?:[^"]+|"))"|[^,]*)',3)
_ArrayDisplay($a)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +30 贡献 +2 收起 理由
afan + 30 + 2 ++

查看全部评分

 楼主| 发表于 2012-1-11 19:38:52 | 显示全部楼层
回复 18# binghc


    嗯。。个个都是高手啊
这几天很忙没时间测试批量转换效率怎么样。
发表于 2012-1-11 23:38:27 | 显示全部楼层
我一直被正则搞定。。。
发表于 2012-1-12 17:27:32 | 显示全部楼层
本帖最后由 love5173 于 2012-1-12 18:32 编辑

回复 18# binghc
根据csv格式跟文本格式的转换规则,这么弄只适用于本段文本
对于"的替换规则是先去掉两头的"然后再把中间的两个"换成一个"。
我水平有限要分两步才能实现 不知道大神有没有一句搞定的方法
试试这个
$a=StringRegExp(StringRegExpReplace(ClipGet(),'(?<=")""','"'),'(?<=,|^)(?:"((?:[^"]+|"+))"|[^,]*)',3)
发表于 2012-1-12 19:53:37 | 显示全部楼层
直接用excel处理吧,用正则,意外太容易发生了
发表于 2012-2-1 19:33:30 | 显示全部楼层
本帖最后由 netegg 于 2012-2-1 19:40 编辑

没测试过,也没细看过,lz自己对着看吧
三个文件,我也忘了到底是用哪个了,好像是1.3那个

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-2-1 20:30:06 | 显示全部楼层
回复 23# netegg


模拟的数据不够全面,没时间从系统导出数据来测试,
发表于 2012-2-23 16:57:35 | 显示全部楼层
本帖最后由 Duvet 于 2012-2-23 16:59 编辑

上面的正則用以下字串測試結果有誤
$Text = '"""","""""",""",""""",""""",""",""""",""""",,""""""","""""""'

Duvet 試著寫成一行

#Include <Array.au3>
Local $Text = '"""",AAAA,123456,",",12345678901234567890,0.123456,dddddddddddd,,",,"'
_ArrayDisplay(StringRegExp(StringRegExpReplace(StringRegExpReplace($Text, '\G((?:"(?>""|[^"]+)*+"|[^",\v]++)?)(?:,|\v++)', "$1" & Chr(127)), '(?m)(?<=^|\x7f)"|"(?=$|\x7f)|(")"', "$1"), "(?<=^|\x7f)[^\x7f]*(?=\x7f|\Z)", 3))
Exit

评分

参与人数 1金钱 +50 贡献 +3 收起 理由
afan + 50 + 3

查看全部评分

发表于 2012-2-24 10:40:24 | 显示全部楼层
本帖最后由 shuren88 于 2012-2-24 10:45 编辑

这个不知对楼主处理CSV格式文件是否有用,请看:

http://www.autoitx.com/forum.php ... mp;extra=#pid401572

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-2-24 17:37:57 | 显示全部楼层
本帖最后由 曼菲士 于 2012-2-24 17:41 编辑

正则表达式是编程界的神曲“忐忑”,一点也不懂什么意思。
发表于 2012-3-22 15:06:19 | 显示全部楼层
下载看看
发表于 2012-3-23 08:43:52 | 显示全部楼层
正则~看不懂啊~
发表于 2012-3-23 12:06:14 | 显示全部楼层
表示没理解。
为什么不能用下面的来表示?

#include <Array.au3>
Local $Str = '"""",AAAA,123456,",",12345678901234567890,0.123456,dddddddddddd,,",,"'
$Str=StringSplit($Str,',')
_ArrayDisplay($Str,'Debug~~~')
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 14:16 , Processed in 0.090783 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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