请问一个正则表达式的问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:57:25
我需要把一个从数据库里面导出的文本记录

1232,32323,"sfewf,666",87878,,,"sdjfiewf",12323,"1","eee","rrr",555

我需要把字段的分隔符逗号替换为竖线,但是被两个引号引用的逗号不用替换

这个的正则表达式怎么写,谢谢。。。。
回答者:nnigou - 魔导师 十级 7-31 16:16

这个方法不太好吧,我已经用字符串截取的方法了,就是效率不太高,想换一个方法。

有个比较麻烦的思路
用(\".*?\")先把
"sfewf,666"
"sdjfiewf"
"1"
"eee"
"rrr"
这种带双引号的都用match方法找出来生成数组A,然后再替换为一个特殊的字符或者字符串
然后根据逗号把字符串分为数组B,再判断数组B,遇到特殊的字符串就到数组A里面找出对应的字符串替换回来。

对正则认识的比较浅薄,想不出更好的解决方法呢。
估计用字符串截取会比这个更加复杂

如果用SQL,导出的时候就可以选择分隔符

正则表达式也没这功力了.

([^",]+|"[^"]*")?,([^",]+|"[^"]*")?
这个可以试试

<script type="text/javascript">
str = "1232,32323,\"sfe,wf,666\",87878,,,\"sdjf,iewf\",12323,\"1\",\"eee\",\"rrr\",555";
document.write(str + "<br>");
str = str.split("\"");
var newstr = ""
for(var i = 0; i < str.length; i++)
{
if(i % 2 == 0)str[i] = str[i].replace(/,/g, "|");
if(i < str.length - 1)<