请教一个正则替换的问题
本帖最后由 35888894 于 2012-8-21 18:41 编辑Local $hhef=':正常,"主营米奇,均为专柜正品,带防伪,欢迎大家前来选购",14733251131,迪士尼米奇女包包专柜正"品2012新款,夏潮女士长,款钱包邮U"P2103-02,2012-08-09 23:30:39,ht,箱包皮具/热销女包/男包>钱包卡套>钱包卡套,129.00,包邮,744,否,37,0:正常, , '
Local $bbsd=$hhef
$bbsd=StringRegExpReplace($bbsd,'(\".*?)\,(.*?\".*?)',"$1|$2")
这么匹配只呢匹配到第一个...后面的匹配不到
MsgBox(0,"",$bbsd)
请教下,如何用正则表达式将双引号内的逗号替换成句号
谢谢! 求高手给予解答,谢谢 是不是这个原因:
? (after a repeating character)
Find the smallest match instead of the largest. 选购",14733251131,迪士尼米奇女包包专柜正"品[\quote]
这不算两个双引号之间? 回复 4# user3000
引号需要配对的,我主要的目的是用于分析csv格式的文件
,"xxxxx",格式为这样 本帖最后由 xiehuahere 于 2012-8-22 15:10 编辑
回复 1# 35888894
直接正则貌似不行,不支持组的嵌套,很难做啊~~
否则就可以 "((.*?),){1,}(.*?)" 这种方式来正则替换了。
最终以很难看的方式做出来了,但优点是正则简单 ^_^
#include <Array.au3>
#include <String.au3>
Local $bbsd = ':正常,"主营米奇,均为专柜正品,带防伪,欢迎大家前来选购",14733251131,迪士尼米奇女包包专柜正"品2012新款,夏潮女士长,款钱包邮U"P2103-02,2012-08-09 23:30:39,ht,箱包皮具/热销女包/男包>钱包卡套>钱包卡套,129.00,包邮,744,否,37,0:正常, , '
$array1 = StringRegExp($bbsd, '".*?"', 3) ; Get string within double quotation marks
_ArrayDisplay($array1)
For $i = 0 To UBound($array1) - 1
$array1[$i] = StringRegExpReplace($array1[$i], ',', '。')
Next
_ArrayDisplay($array1)
$array2 = StringSplit($bbsd, '"')
_ArrayDisplay($array2)
;Rejoin strings
$bbsd = ""
Local $j = 0
For $i = 1 To $array2
If Mod($i, 2) == 0 Then ;even
$bbsd &= $array1[$j]
$j += 1
Else ;odd
$bbsd &= $array2[$i]
EndIf
Next
MsgBox(0, "", $bbsd) 左右双引号有区别吗? 本帖最后由 duck904 于 2012-8-22 22:35 编辑
Local $hhef=':正常,"主营米奇,均为专柜正品,带防伪,欢迎大家前来选购",14733251131,迪士尼米奇女包包专柜正"品2012新款,夏潮女士长,款钱包邮U"P2103-02,2012-08-09 23:30:39,ht,箱包皮具/热销女包/男包>钱包卡套>钱包卡套,129.00,包邮,744,否,37,0:正常, , '
$befor = $hhef
$after = $hhef
$reg = "(.*)(""[^""]*"").*"
$after = StringRegExpReplace($befor,$reg,"$1")
$subStr = ""
While $befor <> $after
$subStr = $subStr & @LF & StringRegExpReplace($befor,$reg,"$2")
$befor = $after
$after = StringRegExpReplace($befor,$reg,"$1")
WEnd
MsgBox(0,"",$subStr)$subStr可以改成数组,然后对数组每个元素把','替换成'.'
$reg = "(.*)(""[^""]*"").*"说明:[^""]*任意个非双引号的字符 本帖最后由 xiehuahere 于 2012-8-22 23:02 编辑
简化下6#代码,好像没有必要用正则(除非正则能一次搞定——期待高人)。
Local $bbsd = ':正常,"主营米奇,均为专柜正品,带防伪,欢迎大家前来选购",14733251131,迪士尼米奇女包包专柜正"品2012新款,夏潮女士长,款钱包邮U"P2103-02,2012-08-09 23:30:39,ht,箱包皮具/热销女包/男包>钱包卡套>钱包卡套,129.00,包邮,744,否,37,0:正常, , '
$array = StringSplit($bbsd, '"')
$bbsd = ""
For $i = 1 To $array
If Mod($i, 2) == 0 Then ;even
$bbsd &= '"' & StringReplace($array[$i], ',', '.') & '"'
Else ;odd
$bbsd &= $array[$i]
EndIf
Next
MsgBox(0, "", $bbsd)
就是根据双引号成对的特征。
页:
[1]