2013-07-31 65 views
0

我一直在試圖找出一個正則表達式來匹配SQL中的完整字符串,從一個.sql文件(包括轉義的單引號),以及我想出的那些要麼不捕獲足夠的字符串或導致出現StackOverflow異常(我從''|[^']可能的組合懷疑。檢測SQL字符串

我試圖建立自己的正則表達式是沿

(?<!')'(''|[^'])*'(?!')

我希望這是一個東西線'開始和結束的字符串,與任何數量的'和非單個'`'字符之間。

我考慮的一種解決方案是首先用一個不同的字符替換'對,然後簡單地在單個'之間尋找任何東西,但是有辦法配置我的正則表達式來執行此操作(並且實際運行)。

+0

我只是想在'-'This是一個字符串的正則表達式。它是單引號!!!'' - ',它立即返回正確的子字符串。 – Brilliand

+0

但請注意,您的前瞻/後視效果沒有實際效果,因爲搜索從字符串的開始處開始,而中間部分是貪婪的。 – Brilliand

+0

是的,它適用於單個實例和測試用例,但我正在使用數十萬/數十萬行SQL代碼,其中一些是大量動態SQL。使用這個正則表達式會導致StackOverflow錯誤。我想知道是否有一個不使用'''| [^']'的替代方案,因爲我懷疑這是導致它的原因。 –

回答

1

我想通了:我使用了佔有量詞。此正則表達式將檢測SQL字符串(可能轉義引號):

'([']{2}|[^'])*+'(?!')