簡體   English   中英

需要一個正則表達式C#

[英]Need a Regular Expression C#

我需要一個正則表達式來替換字符串中的文本:

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個方括號([),這樣我就不必為每個問題寫一個單獨的問題。

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

你的意思是這樣嗎?

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM