求一个正则表达式,匹配和替换所有参数。

dacan66 2011-12-05 02:54:43
有一段SQL,以":@"符号开头的表示一个参数表达式,
现在需要用具体的值,替换掉参数,
但是自己写不出正则。

另外:所匹配出的字段信息不包括‘’(单引号)。
想要的格式为 :@ParamName
然后进行替换即可。

故求助。万分感谢。

INSERT INTO OrderTable ( OrderTable.StType , OrderTable.IpOrderID , OrderTable.LRRate , OrderTable.LRJE ,
OrderTable.CBJE , OrderTable.OrderType , OrderTable.Comment , OrderTable.JHAddress , OrderTable.IsFinish ,
OrderTable.JKStsName , OrderTable.JKSts , OrderTable.JKType
, OrderTable.ValAccID , OrderTable.ValStsName ,
OrderTable.ValSts , OrderTable.JGGZ , OrderTable.PrtTimes ,
OrderTable.OrderStsName , OrderTable.OrderSts ,
OrderTable.CartNumber , OrderTable.TKJE , OrderTable.YTJE ,
OrderTable.WJJE , OrderTable.YJJE , OrderTable.ZDZR ,
OrderTable.CJJE , OrderTable.HSJE , OrderTable.HJJE ,
OrderTable.HJSL , OrderTable.JKDate , OrderTable.PSDate ,
OrderTable.AccountID , OrderTable.StaffID ,
OrderTable.CompanyID , OrderTable.OrderDate ,
OrderTable.OrderNumber , OrderTable.OrderSID ,
OrderTable.OrderID ) VALUES ( ':@StType' , ':@IpOrderID' ,
':@LRRate' , ':@LRJE' , ':@CBJE' , ':@OrderType' ,
':@Comment' , ':@JHAddress' , ':@IsFinish' , ':@JKStsName' ,
':@JKSts' , ':@JKType' , ':@ValAccID' , ':@ValStsName' ,
':@ValSts' , ':@JGGZ' , ':@PrtTimes' , ':@OrderStsName' ,
':@OrderSts' , ':@CartNumber' , ':@TKJE' , ':@YTJE' ,
':@WJJE' , ':@YJJE' , ':@ZDZR' , ':@CJJE' , ':@HSJE' ,
':@HJJE' , ':@HJSL' , ':@JKDate' , ':@PSDate' ,
':@AccountID' , ':@StaffID' , ':@CompanyID' , ':@OrderDate'
, ':@OrderNumber' , ':@OrderSID' , ':@OrderID' )

...全文
319 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dacan66 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gxttr 的回复:]

:@\w+\b 这个可以
\b:@\w+\b 这个不可以

因为\b是单词分界符。你的:@左边不是单词,所以无法匹配
[/Quote]

太感谢了:P
我在吃牛肉干,如果你在我旁边,真想挑一块最好的给你。
遥望那些年 2011-12-05
  • 打赏
  • 举报
回复
:@\w+\b 这个可以
\b:@\w+\b 这个不可以

因为\b是单词分界符。你的:@左边不是单词,所以无法匹配
  • 打赏
  • 举报
回复
 string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));

tempStr = Regex.Replace(tempStr,@"':([^']+)'","$1");
/*
* INSERT INTO OrderTable ( OrderTable.StType , OrderTable.IpOrderID , OrderTable.LRRate , OrderTable.LRJE ,
OrderTable.CBJE , OrderTable.OrderType , OrderTable.Comment , OrderTable.JHAddress , OrderTable.IsFinish ,
OrderTable.JKStsName , OrderTable.JKSts , OrderTable.JKType
, OrderTable.ValAccID , OrderTable.ValStsName ,
OrderTable.ValSts , OrderTable.JGGZ , OrderTable.PrtTimes ,
OrderTable.OrderStsName , OrderTable.OrderSts ,
OrderTable.CartNumber , OrderTable.TKJE , OrderTable.YTJE ,
OrderTable.WJJE , OrderTable.YJJE , OrderTable.ZDZR ,
OrderTable.CJJE , OrderTable.HSJE , OrderTable.HJJE ,
OrderTable.HJSL , OrderTable.JKDate , OrderTable.PSDate ,
OrderTable.AccountID , OrderTable.StaffID ,
OrderTable.CompanyID , OrderTable.OrderDate ,
OrderTable.OrderNumber , OrderTable.OrderSID ,
OrderTable.OrderID ) VALUES ( @StType , @IpOrderID ,
@LRRate , @LRJE , @CBJE , @OrderType ,
@Comment , @JHAddress , @IsFinish , @JKStsName ,
@JKSts , @JKType , @ValAccID , @ValStsName ,
@ValSts , @JGGZ , @PrtTimes , @OrderStsName ,
@OrderSts , @CartNumber , @TKJE , @YTJE ,
@WJJE , @YJJE , @ZDZR , @CJJE , @HSJE ,
@HJJE , @HJSL , @JKDate , @PSDate ,
@AccountID , @StaffID , @CompanyID , @OrderDate
, @OrderNumber , @OrderSID , @OrderID )
*/
dacan66 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gxttr 的回复:]

你要替换成什么?
C# code

string str = "INSERT INTO OrderTable ( OrderTable.StType , OrderTable.IpOrderID , OrderTable.LRRate , OrderTable.LRJE , OrderTable.CBJE , OrderTable.OrderType , OrderT……
[/Quote]
你好,非常感谢,
有一个小小的问题求教下,
为什么我用 \b:@\w+\b
不能成功得到结果?
诺维斯基 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 shencb 的回复:]
▪ 云计算与大数据领域的关系是?▪ 高性能计算云是什么?能解决什...▪ 广电网络的CIO们是如何看待云计...▪ 为什么要自建私有云?▪ 云时代的虚拟机密匙该如何管理?
有一段SQL,以":@"符号开头的表示一个参数表达式,
现在需要用具体的值,替换掉参数,
但是自己写不出正则。

另外:所匹配出的字段信息不包括‘’(单引号)。
想要的格式为 :@ParamName
然后进行替换即……
[/Quote]

你这样是不行的。别用正则了。
遥望那些年 2011-12-05
  • 打赏
  • 举报
回复
你要替换成什么?

string str = "INSERT INTO OrderTable ( OrderTable.StType , OrderTable.IpOrderID , OrderTable.LRRate , OrderTable.LRJE , OrderTable.CBJE , OrderTable.OrderType , OrderTable.Comment , OrderTable.JHAddress , OrderTable.IsFinish , OrderTable.JKStsName , OrderTable.JKSts , OrderTable.JKType , OrderTable.ValAccID , OrderTable.ValStsName , OrderTable.ValSts , OrderTable.JGGZ , OrderTable.PrtTimes , OrderTable.OrderStsName , OrderTable.OrderSts , OrderTable.CartNumber , OrderTable.TKJE , OrderTable.YTJE , OrderTable.WJJE , OrderTable.YJJE , OrderTable.ZDZR , OrderTable.CJJE , OrderTable.HSJE , OrderTable.HJJE , OrderTable.HJSL , OrderTable.JKDate , OrderTable.PSDate , OrderTable.AccountID , OrderTable.StaffID , OrderTable.CompanyID , OrderTable.OrderDate , OrderTable.OrderNumber , OrderTable.OrderSID , OrderTable.OrderID ) VALUES ( ':@StType' , ':@IpOrderID' , ':@LRRate' , ':@LRJE' , ':@CBJE' , ':@OrderType' , ':@Comment' , ':@JHAddress' , ':@IsFinish' , ':@JKStsName' , ':@JKSts' , ':@JKType' , ':@ValAccID' , ':@ValStsName' , ':@ValSts' , ':@JGGZ' , ':@PrtTimes' , ':@OrderStsName' , ':@OrderSts' , ':@CartNumber' , ':@TKJE' , ':@YTJE' , ':@WJJE' , ':@YJJE' , ':@ZDZR' , ':@CJJE' , ':@HSJE' , ':@HJJE' , ':@HJSL' , ':@JKDate' , ':@PSDate' , ':@AccountID' , ':@StaffID' , ':@CompanyID' , ':@OrderDate' , ':@OrderNumber' , ':@OrderSID' , ':@OrderID' )";

Regex reg = new Regex(@":@\w+");

str = reg.Replace(str, "??");

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧