2009-02-06 244 views
3

我想從SQL字符串中刪除方括號,但僅限於其中沒有空格的情況。使用C#中的正則表達式刪除括號

E.g. 「SELECT [intId],[The Description]」應該返回「SELECT intId,[The Description]」。

我可以在方括號無空格內用正則表達式:

\[[^\s]*\] 

如何從這些比賽的方括號的原始字符串被刪除?

+0

確定你想這樣做?字符串文字中括號的含義是什麼?或與保留字匹配的列名稱? – 2009-02-06 17:33:29

+0

當然,我知道這裏有缺陷。我想我的更廣泛的問題是如何將正則表達式匹配替換爲來自匹配本身的東西。我明白,現在,在這個例子的幫助下。 只有在字符串經過一些解析後才能完成此替換。 – Paul 2009-02-09 10:01:52

回答

5
sql = Regex.Replace(sql, "\\[([^\\s]*)\\]", "$1"); 
3

正則表達式是不夠的,除了只有在你上面的特定字符串的一次性方式。如果你正在通過許多SQL線路以自動化的方式進行此操作,那麼你可能會遇到一堆麻煩,請移除您需要的括號。

在這種情況下,你需要更多的SQL詞法分析器/分析器,可以幫助你專注下來只有列名,不包括表名,字符串參數在觸發器或功能,等...