jchang 发表于 2008-10-28 15:13:00

正则表达式问题请教

类似以下的字符串,以数字开头,逗号后跟字母:
10,Displ.,Reaction,
24,Prog,Design,VSH,
134,Rigid,+Z;,Rigid,Y,
使用StringRegExpReplace函数使从第二个以后的所有逗号全部替换为空格。如下:
10,Displ.Reaction
24,ProgDesignVSH
134,Rigid+Z;Rigid Y
请问这个正则表达式如何写呢?

liongodmien 发表于 2008-10-28 15:42:21


$string = StringRegExpReplace('10,Displ.,Reaction,', ',', ' ', 0)
$string = StringRegExpReplace($string, ' ', ',', 1)
MsgBox(0,'',$string)

bing614 发表于 2008-10-28 15:45:15

对正则不是很熟悉,
可以试试用StringSplit拆分后再重组.

jchang 发表于 2008-10-28 17:41:53

用StringSplit是个不错的主意,我已经试过了,能够满足要求

jchang 发表于 2008-10-28 17:43:41

liongodmien 回答过我的很多帖子,多谢

liongodmien 发表于 2008-10-28 19:39:00

  对于LZ在这的问题,用字符替换(StringRegExpReplace()或StringReplace()),可以比较容易的得到结果,而不用分解再组合,对同一问题可以用多个函数解决,但一般应该用比较容易的那个解决,这样程序的运算速度也比较的快!

pcbar 发表于 2008-10-28 21:10:15

$string = StringRegExpReplace('10,Displ.,Reaction,', '(\D),', '\1 ')
MsgBox(0,'',$string)

rolaka 发表于 2008-10-28 22:27:20

首先替换所有,成为空格,再替换所有数字编号后的第一个空格为,
...我就想了这个蠢办法...

jchang 发表于 2008-10-29 08:20:14

越来越精妙了,多谢

gzken 发表于 2008-10-29 08:48:49

凑凑热闹...

把第一个,和后面的字符替换成'':
MsgBox(0,'',StringRegExpReplace("10,Displ.,Reaction",",(.*)",""));
下面这个是把第一个,前的字符取出:
MsgBox(0,'',StringRegExpReplace("10,Displ.,Reaction","^([^,]*).*","\1"));
页: [1]
查看完整版本: 正则表达式问题请教