newuser 发表于 2011-1-11 10:25:21

[已解决]正则:如何实现替换?

本帖最后由 newuser 于 2011-1-11 16:12 编辑

如何实现将foo(10,7,2)替换成foo(7,2,10)?
现在只是能匹配出 10      7       2,用下面的:
foo\(([^,]*),([^,]*),([^)]*)\),但如何实现替换他们呢?

republican 发表于 2011-1-11 10:34:24

回复 1# newuser
我的正则不怎样,效率方面还是等专业人士出场吧.

xuzhenjun130 发表于 2011-1-11 10:43:17

直接用正则来实现替换不容易,不过要实现的目标却不难$a=StringRegExp("foo(10,7,2)",'foo\(([^,]*),([^,]*),([^)]*)\)',3)
$b="foo("&$a&","&$a&","&$a&")"

sxd 发表于 2011-1-11 10:48:36

其实楼主问的是替换
就是2楼的用法 $1 $2 $3分别对应第1 2 3 个捕获组 捕获到的内容

newuser 发表于 2011-1-11 15:24:05

本帖最后由 newuser 于 2011-1-11 15:35 编辑

回复 2# republican

在au3.rehelper中如何实现呢?

在scite中:
#include <array.au3>
Local$Str="foo(10,7,2)"
Local$Result=StringRegExpReplace($Str,"foo\(\([^,]*\),\([^,]*\),\([^)]*\)\)","foo($2,$3,$1")
MsgBox(0,"",$Result)

republican 发表于 2011-1-11 15:54:45

回复 5# newuser

你不是已经做出来了麽?

newuser 发表于 2011-1-11 16:05:26

回复 6# republican

afan 发表于 2011-1-11 16:08:10

回复 7# newuser


    状态栏不是提示了吗:成功执行(无匹配),没有匹配当然不会替换~

newuser 发表于 2011-1-11 16:20:22

回复 8# afan

afan别生气,刚注意到!

afan 发表于 2011-1-11 16:22:40

回复 9# newuser

republican 发表于 2011-1-11 16:30:39

本帖最后由 republican 于 2011-1-11 16:33 编辑

回复 7# newuser

....我自己也没看到....

谢谢afan,又明白了一些东西了.
页: [1]
查看完整版本: [已解决]正则:如何实现替换?