1
4

3 回答 3

2

为什么不在匹配模式中包含 t1?

string pattern = " from t1";
string answer=Regex.Relace(q , pattern , ",field3 from t1");
于 2012-08-10T19:49:01.407 回答
1

您正在尝试限制替换的数量,听起来,所以看起来这个问题已经在这里得到了回答:

如何正则表达式搜索/替换.NET中字符串中的第一次出现?

[编辑:] 回复第一条评论:

抱歉,不知道 FROM 是一个示例还是您实际尝试做的事情。试图替换不基于可控字符串的东西是有问题的。如果您不控制所有输入的字符串,您可能还必须处理以下情况:

SELECT [From], [To], [Email], [Subject] FROM EmailsSent

最终结果是您的正则表达式将不得不前后查看以检查括号和括号,因为您不能 100% 控制它给出的字符串。我要提醒您,您正在做的事情听起来像是一种不好的做法,只有在没有其他选择的情况下才应该这样做。看一下前瞻/后向信息,您应该可以在 google 上搜索更多信息:

http://openmymind.net/2011/2/16/Regex-Positive-Negative-Look-Ahead-Behind/

于 2012-08-10T19:51:07.387 回答
0
string q = "select field1,field2 from t1 where field1 in (select field1 from t2 where t2.field2>5)";

Regex r=new Regex(@"from.*$");
string s=r.Replace(q,",field3 $0");//output
于 2012-08-11T03:30:37.423 回答