我有一个字符串
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")
请你在这方面帮助我。 提前谢谢。
答案 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个空格