需要正则表达式C#

时间:2012-08-14 07:22:17

标签: c# regex

我需要一个正则表达式来替换string中的文本:

string s="Insert into VERSION (ENTRYID,APPVERSION,PLATFORMVERSION,TIMESTAMPED,USERNAME,SQLSCRIPTNAME,COMMENTS)VALUES(SWS_Version_ID."NEXTVAL",'[3.02.01P20]','[4.1.38orcl]',sysdate,null,null,null);";

我需要将方括号中的3.02.01P20替换为NEW_VERSION。 可以有除3.02.01P20之外的其他版本,但在该行中我们可以看到第一个开放方括号跟随版本。

另请告诉我,如果它(3.02.01P20)如下所示,我必须做出哪些更改,比如说3开方括号([),这样我就不必为每一个写一个单独的问题。

2 个答案:

答案 0 :(得分:1)

using System;
using System.Text.RegularExpressions;
class Tester
{
    public static void Main()
    {
        string s = "Insert into VERSION " + 
            "(ENTRYID,APPVERSION,PLATFORMVERSION,TIMESTAMPED,USERNAME,SQLSCRIPTNAME,COMMENTS)" +
            "VALUES(SWS_Version_ID.\"NEXTVAL\",'[3.02.01P20]','[4.1.38orcl]',sysdate,null,null,null);";
        Match m = (new Regex("^(.*)(\\[.*?\\])(.*?)(\\[.*?\\])(.*)$")).Match(s);
        //Console.WriteLine("{0},{1}", m.Groups[2].Value, m.Groups[3].Value);
        string[] parts = {
                m.Groups[1].Value,
                m.Groups[2].Value, //[3.02.01P20]
                m.Groups[3].Value, //','
                m.Groups[4].Value, //[4.1.38orcl]
                m.Groups[5].Value //tail
            };
        parts[1] = "[NEW_VERSION]";
        Console.WriteLine(string.Join("",parts));
    }
}

你的意思是这样吗?

答案 1 :(得分:0)

试试这个:

string output = Regex.Replace(s, @"(.*'\[)(.*)(\]'.*)('\[.*)", "$1" + newVer + "$3$4");