2017-02-28 20 views
1

快速的問題的函數列表..我試圖讓在記事本++去功能列表選項...記事本++的SQL

現在,我發現這個線程: Notepad++ Function List for PL/SQL

這幫助讓我開始但是,我仍然在爲一些事情而苦苦掙扎,而且我似乎無法將我的猴子大腦包裹起來。

這將是這部分我需要關注:

 <function 
      mainExpr="^[\t ]*(FUNCTION|PROCEDURE)[\s]*[\w]*[\s]*(\(|IS|AS)*" 
      displayMode="$functionName"> 
      <functionName> 
       <nameExpr expr="[\w]+[\s]*(\(|IS|AS)"/> 
      </functionName> 
     </function> 

這工作完全正常..至今。 但是,我還想看看PACKAGE標題和PACKAGE BODY名稱,以便幫助整理。

我想這會很容易調整的正則表達式然而,什麼我已經試過工作

所以我想挑出這些種情景模式:

CREATE PACKAGE aaa 
CREATE OR REPLACE PACKAGE bbb 
CREATE PACKAGE BODY ccc 
CREATE OR REPLACE PACKAGE BODY ddd 

所有4:aaa,bbb,ccc和ddd。 我甚至無法把它拉回來一個尚未.. :(

希望我能得到一些幫助/提示/東西..

我知道這是主要的「邏輯」:

mainExpr="^[\t ]*(FUNCTION|PROCEDURE)[\s]*[\w]*[\s]*(\(|IS|AS)*" 

是發現線(S)..

,並試圖用它發現了以對決的邏輯..說,功能,和我想要的數據包...我想這:

mainExpr="^[\t ]*(FUNCTION|PROCEDURE|CREATE OR REPLACE PACKAGE)[\s]*[\w]*[\s]*(\(|IS|AS)*" 

但即使這樣也沒有選出標題! O.o

我敢肯定,我需要做的部分..但又一次,不是真正瞭解它是如何工作的?

我讀過這樣的: https://notepad-plus-plus.org/features/function-list.html

,但有明顯的一些關於這件事我沒有完全理解語法/用法..

希望有人能幫助我嗎?

回答

3

我認爲你的問題來自正則表達式,而不是你做錯的任何事情。我做了基於一個我發現這裏一個新的解析器:http://www.hermanmol.nl/?p=240

<parser id="plsql_func" displayName="PL/SQL" commentExpr="((/\*.*?\*)/|(--.*?$))"> 
    <function 
     mainExpr="^[\w\s]{0,}(PACKAGE BODY|PACKAGE|FUNCTION|PROCEDURE)[\s]{1,}[\w_]{1,}"> 
     <functionName> 
      <nameExpr expr="^[\w\s]{0,}(PACKAGE BODY|PACKAGE|FUNCTION|PROCEDURE)[\s]{1,}\K[\w_]{1,}"/> 
     </functionName> 
    </function> 
</parser> 

對我來說,這似乎正確拉出包,過程和函數。然而

有一點要注意,我不能讓這個使用文件擴展名ASSOCATION工作,並用以下代替測試的文本文件:<association langID= "0" id="plsql_func" />

我也被放置在更新functionList.xml文件Program Files (x86)\Notepad++Users\xxxxx\AppData\Roaming\Notepad++目錄。

編輯 - 正則表達式的一個簡短的說明,我不是在正則表達式很大,但它要求在評論

^[\w\s]{0,} - 從行的開頭,有0個或多個字母或空格字符

(PACKAGE BODY|PACKAGE|FUNCTION|PROCEDURE) - 隨後由任何這些

[\s]{1,}[\w_]{1,} - 接着是一個或多個空格,隨後一個或多個單詞

+0

確定..啊,這是更接近......但我也有興趣瞭解它..你能解釋一下它一下?我熟悉正則表達式。但沒有親。我有麻煩「解析」,我自己:)我現在有的問題是我的包「名稱」包括架構:;)嘿我願意自己解決,如果我只是明白你有什麼現在和它在做什麼。 – Ditto

+0

哦,甜..拿到了:)'[\ w _。]'只是加上了你的_除了包括在「單詞」這段時間..(我不得不看看\ w ..不熟悉它:))謝謝你! (FYI:將期間添加到mainExpr和nameExpr ..):) – Ditto

+1

我對Regex也不是很高興,雖然很高興它幫助:)但我發現regexr.com在解釋發生了什麼很有用 – Chrisrs2292

0

由於Chrisrs2292,

我受到Users \ xxxxx \ AppData \ Roaming \ Notepad ++目錄中functionList.xml文件位置的幫助。

正則表達式T-SQL

<association id= "T-SQL_func" langID="17"/> 

<!-- T-SQL--> 
<parser displayName="T-SQL" id="T-SQL_func" commentExpr="(?s:/\*.*?\*/)|(?m-s:--.*?$)"> 
<function mainExpr='(?im)^\h*(create|alter)\s+(function|procedure)\s+((\[|")?[\w_]+(\]|")?\.?)?((\[|")?[\w_]+(\]|")?)?' 
      displayMode="$functionName"> 
    <functionName> 
     <nameExpr expr='(?im)(function|procedure)\s+((\[|")?[\w_]+(\]|")?\.?)?((\[|")?[\w_]+(\]|")?)?' /> 
    </functionName> 
</function>