0

文字列内のテキストを置き換える正規表現が必要です。

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つの左角括弧([)と言って、それぞれに個別の質問を書く必要がないようにします.

4

2 に答える 2

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));
    }
}

こんな感じですか?

于 2012-08-14T07:47:48.713 に答える
0

これを試して:

string output = Regex.Replace(s, @"(.*'\[)(.*)(\]'.*)('\[.*)", "$1" + newVer + "$3$4");
于 2012-08-14T07:33:52.130 に答える