我还想在那之后取下字符串直到下一个逗号,如果该字符串在“select”之后,那么我想在select之后替换任何东西,直到下一个逗号。 例如: 从mytable中选择a.column,a.myID,a.studentID
我有很多像这样的文本文件,所以我需要一些照顾它的东西,就像我想用空字符串替换列一样,它应该在替换后看起来像 从mytable中选择a.myID,a.studentID
如果我想用空字符串替换myID,替换后它应该如下所示 从mytable中选择a.column,a.studentID
如果我想用空字符串替换studentID,它应该是这样的 从mytable中选择a.column,a.myID。
由于 我正在使用C#我正在考虑使用正则表达式,但无法提出正则表达式。
答案 0 :(得分: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);
}
}
测试此代码here。
答案 1 :(得分: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");