C#中的Regex模式用于C#中的Regex.Replace()

时间:2017-02-13 13:26:10

标签: c# regex implementation

我有一个字符串

string str1 = "SELECT * FROM A INNER JOIN B JOIN C JOIN A INNER JOIN B LEFT JOIN C";

我想用 \ nJOIN JOIN 后面没有 INNER LEFT 等>

我想要的输出是

SELECT * FROM A INNER JOIN B \nJOIN C \nJOIN A INNER JOIN B LEFT JOIN C 

我是新手C#程序员,我想要使用的是

var pattern = NOT IN("INNER" || "OUTER" || "LEFT") + @"\b"+ "JOIN";
var output = Regex.Replace(str1, pattern, "\nJOIN", RegexOptions.IgnoreCase); 

我坚持用RegEx实现 NOT IN(" INNER" ||" OUTER" ||" LEFT")

请你在这方面帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

string str1 = "SELECT * FROM A INNER JOIN B JOIN C JOIN A INNER JOIN B LEFT JOIN C";
string result = Regex.Replace(str1, @"(?<!INNER)\s+JOIN", "\nJOIN");
//result: SELECT * FROM A INNER JOIN B \nJOIN C \nJOIN A INNER JOIN B LEFT \nJOIN C

我使用这个方便的网站来学习如何操作:regex101

请记住使用右下方的快速参考搜索来查找您需要的字符或表达式(例如,我在您的案例中搜索“不是”)

更新:使其更加强大,并允许INNER和JOIN之间有1到n个空格