andersonljw
发表于 2012-1-5 23:47:30
得好好研究研究正则。。
sgj584520
发表于 2012-1-10 21:28:04
超版就是超版啊,牛叉的很
binghc
发表于 2012-1-11 17:55:34
本帖最后由 binghc 于 2012-1-11 18:05 编辑
回复 7# afan
看来还是有人记得我啊,不错,哈哈!{:face (317):}
一条表达式我也搞不定,不过一行语句我倒是能搞定:
(?<=,|^)(?:"((?:[^"]+|""))"|[^,]*)要把两双引号转化成一个双引号,又想让代码尽可能的简短,要这么干:
"""",A""AAA,123456,",",12345678901234567890"",0.123456,dddddddddddd,,",,"
#include<array.au3>
$a=StringRegExp(StringRegExpReplace(ClipGet(),'""(?!")','"'),'(?<=,|^)(?:"((?:[^"]+|"))"|[^,]*)',3)
_ArrayDisplay($a)
auto
发表于 2012-1-11 19:38:52
回复 18# binghc
嗯。。个个都是高手啊
这几天很忙没时间测试批量转换效率怎么样。
Chinacat
发表于 2012-1-11 23:38:27
我一直被正则搞定。。。
love5173
发表于 2012-1-12 17:27:32
本帖最后由 love5173 于 2012-1-12 18:32 编辑
回复 18# binghc
根据csv格式跟文本格式的转换规则,这么弄只适用于本段文本
对于"的替换规则是先去掉两头的"然后再把中间的两个"换成一个"。
我水平有限要分两步才能实现 不知道大神有没有一句搞定的方法
试试这个
$a=StringRegExp(StringRegExpReplace(ClipGet(),'(?<=")""','"'),'(?<=,|^)(?:"((?:[^"]+|"+))"|[^,]*)',3)
kevinch
发表于 2012-1-12 19:53:37
直接用excel处理吧,用正则,意外太容易发生了
netegg
发表于 2012-2-1 19:33:30
本帖最后由 netegg 于 2012-2-1 19:40 编辑
没测试过,也没细看过,lz自己对着看吧
三个文件,我也忘了到底是用哪个了,好像是1.3那个
auto
发表于 2012-2-1 20:30:06
回复 23# netegg
模拟的数据不够全面,没时间从系统导出数据来测试,
Duvet
发表于 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
shuren88
发表于 2012-2-24 10:40:24
本帖最后由 shuren88 于 2012-2-24 10:45 编辑
这个不知对楼主处理CSV格式文件是否有用,请看:
http://www.autoitx.com/forum.php?mod=viewthread&tid=30538&page=1&extra=#pid401572
曼菲士
发表于 2012-2-24 17:37:57
本帖最后由 曼菲士 于 2012-2-24 17:41 编辑
正则表达式是编程界的神曲“忐忑”,一点也不懂什么意思。
alice148
发表于 2012-3-22 15:06:19
下载看看{:face (382):}
liui
发表于 2012-3-23 08:43:52
正则~看不懂啊~
chenronting
发表于 2012-3-23 12:06:14
表示没理解。
为什么不能用下面的来表示?
#include <Array.au3>
Local $Str = '"""",AAAA,123456,",",12345678901234567890,0.123456,dddddddddddd,,",,"'
$Str=StringSplit($Str,',')
_ArrayDisplay($Str,'Debug~~~')