-1

その後、次のコンマまで文字列を削除したいのですが、その文字列が「選択」の後にある場合は、選択後から次のコンマまで何かを置き換えたいと思います。例: mytable から a.column、a.myID、a.studentID を選択します。

私はこのような多くのテキストファイルを持っているので、列を空の文字列に置き換えたい場合のように、それを処理するものが必要です

myIDを空の文字列に置き換えたい場合は、mytableからa.column、a.studentIDを選択した後、次のようになります

そして、studentID を空の文字列に置き換えたい場合は、次のようになります。

ありがとうございます私はC#で働いています。正規表現を使用することを考えていましたが、正規表現を思い付くことができません。

4

2 に答える 2

0

正規表現を使用して C# で「select の後から次のコンマまで何かを置き換える」場合は、次のようにします。

Regex.Replace("select a.myID, a.studentID from mytable", @"select\s[^\,]+", "select newColumn");

ただし、テーブル名/エイリアスを保持する必要がある場合は、少し変更する必要がある場合があります。

Regex.Replace("select a.myID, a.studentID from mytable", @"select\s([^\.]+\.)[^\,]+", "select $1newColumn");
于 2012-07-27T19:37:33.333 に答える
0

必要なものはこちら >>

using System;
using System.Text.RegularExpressions;

class Program
{
  static void Main()
  {
    string input = "select ceiling(a.interest) as interest, a.myID as mID, a.studentID as sID from mytable";
    string column = "a.myID";
    string pattern = "((?<=\\bselect)\\s+[^,]*\\b" + Regex.Escape(column) + "\\b[^,]*\\s*,?|\\s*,\\s*[^,]*\\b" + Regex.Escape(column) + "\\b[^,]*(?=(?:,|\\sfrom\\b)))";
    string output = Regex.Replace(input, pattern, "", RegexOptions.IgnoreCase);
    Console.WriteLine(output);
  }
}

このコードをここでテストします。

于 2012-07-27T19:27:47.327 に答える