-1

我还想在此之后删除字符串,直到下一个逗号,如果该字符串在“select”之后,那么我想在 select 之后替换任何内容,直到下一个逗号。例如:select a.column, a.myID, a.studentID from mytable

我有很多这样的文本文件,所以我需要一些东西来处理它,比如如果我想用空字符串替换列,它应该看起来像从 mytable 中替换 select a.myID, a.studentID

如果我想用空字符串替换 myID 它应该在替换 select a.column, a.studentID from mytable 之后看起来像这样

如果我想用空字符串替换 studentID,它应该看起来像这样 select a.column, a.myID from mytable。

谢谢我正在使用 C# 我正在考虑使用正则表达式,但无法提出正则表达式。

4

2 回答 2

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 回答
0

如果您想在 C# 中使用正则表达式“在选择后替换任何内容,直到下一个逗号”,则以下内容将起作用:

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 回答