2015-08-16 66 views
1

replace characters in notepad++ BUT exclude characters inside single quotation marks取代記事本+字符,但不包括單引號(2日)內的字符

對不起,誰已經回答了第一個similiar問題的所有用戶(特別是阿維納什·拉吉) - 我只是忘記了第二種字符串。 (AND(那是可悲的事情) - 我不能夠調整從1 similiar問題第二種字符串的解決方案...)

我有這樣兩個不同的字符串:

SELECT column_name FROM table_name WHERE column_name IN ('A' , 'st9u' ,'Meyer', ....); 
WHERE a.object_type IN (' 'TABLE'', ''MATEerialIZED VIE3W' ') 

我想從上到下替換記事本++中的所有字符,但排除替換 單引號內的字符。

條件:它存在前/後面沒有實心結構/之間的單引號部分!

(這意味着 - 我不能使用 關鍵字 「IN」 或類似的跡象 「」 或 「(」 或 「)」 或 「!」;對於這個表達式 ...)

的一旦事情是,對於單引號兩種結構是可能的: 「單詞|數」「」單詞|編號「」 (但,如圖第二實例中,具有不同數量的每個單引號之間的空格!)。

目標字符串(單引號裏面的人物都留unchangend):

select column_name from table_name where column_name in ('A' , 'st9u' ,'Meyer', ....); 
where a.object_type in (' 'TABLE'', ''MATerialIZED VIE3W' ') 

我怎樣才能排除在記事本+ +的單引號(自更換)的一部分?

+0

可能重複(http://stackoverflow.com/questions/32025638/replace-characters-in-notepad-but-exclude-characters -inside-single-quotation -m) – CBroe

回答

1

能爲越來越' ... ' .... abc''結合了recursive一部分,使用後\K for resetting。這是需要跳過的部分。而在管道使用一種the trick,匹配餘下的字:

'\s*(?0)?[^']*'\K|(\w+) 
  • (?0)?這裏的模式可選,從開始粘貼
  • \sshorthand空白字符[ \t\r\n\f]
  • \w是一個短for word character[A-Za-z0-9_]

並替換爲\L\1以將第一個捕獲組中捕獲的低位字或\U\1更低的字替換爲高位。
適用於我的NP ++ 6.7.9.2與您的示例數據。用於測試模式的See regex101。的[替換字符,在記事本++但不包括單引號內的字符]

enter image description here

+0

嗨和對不起,我的下一個錯誤 - 你的解決方案是這樣的但我只發佈了整個第二條語句的一部分(愚蠢) - 你也可以嘗試解決這個問題嗎? –

+0

嗨@ora_job,它在哪裏不按預期工作?只是做了一點修改! –

+0

我在下一條評論中發表了整個陳述:(問題是我沒有提及的是 - 'Word/Number'部分是全球單引號中的附加部分 - 請看看這個開頭和結尾的整個第二語句...) –

相關問題