想了很久的一个正则表达式,还是问这里的人吧
不是写代码,是我想用Editplus替换掉一些文本,它也支持正则表达式,比如我经常用SQL Server自带的SQL语句生成一些
INSERT INTO [GIS].[dbo].[GISLog]
([RealUser]
,[Opreator]
,[Approver]
,[Event]
,[Msg]
,[Memo]
,[Time])
VALUES
(<RealUser, nvarchar(20),>
,<Opreator, nvarchar(20),>
,<Approver, nvarchar(20),>
,<Event, nvarchar(50),>
,<Msg, nvarchar(max),>
,<Memo, nvarchar(max),>
,<Time, datetime,>)
我可以用Editplus的替换功能,把<替换成@,
(@RealUser, nvarchar(20),>
,@Opreator, nvarchar(20),>
,@Approver, nvarchar(20),>
,@Event, nvarchar(50),>
,@Msg, nvarchar(max),>
,@Memo, nvarchar(max),>
,@Time, datetime,>)
但是后面的", nvarchar(20),>"部分想替换成", ",就不知道该怎么办了。我知道可以用正则表达式的,求达人帮忙写个正则表达式,我看 了规则,跟ASP.NET的正则表达式一样。 --------------------编程问答-------------------- \<([^,]*),[^,]*,\>
一起替换试试. --------------------编程问答-------------------- 用(?<=@\w+),[^,]+,>
替换成,
注意我里面的,是英文的,不是中文的。
但其实你还需处理最后一个多出的逗号。 --------------------编程问答--------------------
string str = @"INSERT INTO [GIS].[dbo].[GISLog]--------------------编程问答-------------------- 你就用Replace就可以了。
([RealUser]
,[Opreator]
,[Approver]
,[Event]
,[Msg]
,[Memo]
,[Time])
VALUES
(<RealUser, nvarchar(20),>
,<Opreator, nvarchar(20),>
,<Approver, nvarchar(20),>
,<Event, nvarchar(50),>
,<Msg, nvarchar(max),>
,<Memo, nvarchar(max),>
,<Time, datetime,>)";
string result = Regex.Replace(str, @"<([^,]+).*?>", "@$1");
Console.WriteLine(result);
string str2 = @"INSERT INTO [GIS].[dbo].[GISLog]
([RealUser]
,[Opreator]
,[Approver]
,[Event]
,[Msg]
,[Memo]
,[Time])
VALUES
(<RealUser, nvarchar(20),>
,<Opreator, nvarchar(20),>
,<Approver, nvarchar(20),>
,<Event, nvarchar(50),>
,<Msg, nvarchar(max),>
,<Memo, nvarchar(max),>
,<Time, datetime,>)";
string str2Result = str2.Replace(", nvarchar(20),>",", ");
TextBox1.Text = str2Result;
--------------------编程问答-------------------- 大侠们,我试了几个,都不行啊,不必要一次替换成成功的那样,分两次也行,
第一次,把<替换成@
第二次,把后边的替换成空,就是把下面的东东,
(@RealUser, nvarchar(20),>
,@Opreator, nvarchar(20),>
,@Approver, nvarchar(20),>
,@Event, nvarchar(50),>
,@Msg, nvarchar(max),>
,@Memo, nvarchar(max),>
,@Time, datetime,>)
替换成
(@RealUser
,@Opreator
,@Approve
,@Event
,@Msg
,@Memo) --------------------编程问答-------------------- 你这样,我还不如一行一行手动的删呢…… --------------------编程问答-------------------- 这样不行吗?
string str = @"INSERT INTO [GIS].[dbo].[GISLog]--------------------编程问答-------------------- 据传这里有个叫过客的,正则很牛掰 --------------------编程问答-------------------- 1
([RealUser]
,[Opreator]
,[Approver]
,[Event]
,[Msg]
,[Memo]
,[Time])
VALUES
(<RealUser, nvarchar(20),>
,<Opreator, nvarchar(20),>
,<Approver, nvarchar(20),>
,<Event, nvarchar(50),>
,<Msg, nvarchar(max),>
,<Memo, nvarchar(max),>
,<Time, datetime,>)";
string result = Regex.Replace(str, @"<([^,]+)[^>]+>", "@$1");
Console.WriteLine(result);
/*
INSERT INTO [GIS].[dbo].[GISLog]
([RealUser]
,[Opreator]
,[Approver]
,[Event]
,[Msg]
,[Memo]
,[Time])
VALUES
(@RealUser
,@Opreator
,@Approver
,@Event
,@Msg
,@Memo
,@Time)
*/
< --> @
2
[^,]+\s*,\s*> -- 空
3
,\) -- )
补充:.NET技术 , ASP.NET