Regex 记事本++;函数列表:返回类,即使为空

Regex 记事本++;函数列表:返回类,即使为空,regex,notepad++,Regex,Notepad++,我试图定义一个自定义函数列表(functionList.xml,在%appdata%/Notepad++)以便将其用作一个长的基于文本的文件的导航器,该文件用作软件的输入 尽管仍然有一个问题困扰着我:我想返回一个类,即使它里面没有函数 首先,这是我的文本文件的一个示例(你们中的一些人可能会认出一个用于eQuest energy建模软件的.inp文件,但这与此无关): 以下是我拥有的当前解析器: <parser id="equest_full" displayName="

我试图定义一个自定义函数列表(functionList.xml,在%appdata%/Notepad++)以便将其用作一个长的基于文本的文件的导航器,该文件用作软件的输入

尽管仍然有一个问题困扰着我:我想返回一个类,即使它里面没有函数

首先,这是我的文本文件的一个示例(你们中的一些人可能会认出一个用于eQuest energy建模软件的.inp文件,但这与此无关):

以下是我拥有的当前解析器:

<parser 
    id="equest_full" 
    displayName="eQuest Full Function List">

    <!-- Find The entire Class using a positive lookahead -->
    <classRange
        mainExpr="\$.*?\r\n\r\n.*?(?=\$)" 
        displayMode="node" >

        <!-- Here we return just the Class name -->
        <className>
            <!-- Find only the text, using a negative lookahead to exclude multiple white spaces -->
            <nameExpr expr='\w(\w|-|/| (?! ))+'/>
        </className>

        <!-- Here we find the "function" - here it's something that starts a line with "XXXX" = "blabla" -->
        <function
            mainExpr='^\".*?\" = [^ ]+' >
            <functionName>
                <!-- We already have exactly what we want with the above -->                    
                <funcNameExpr expr=".*"/>
            </functionName>
        </function>
    </classRange>
    <function 
        mainExpr="\$.*?\r\n\r\n">
        <!-- A poor attempt to display classes even if empty... doesn't work properly -->
        <functionName>
            <!-- Find only the text, using a negative lookahead to exclude multiple white spaces -->
            <nameExpr expr="\w(\w|-|/| (?! ))+"/>
        </functionName>
    </function>
</parser>
直到下一个$sign


如何修改上述正则表达式以确保至少有一个字符不是\n\r或空格?

您找到这个了吗?我不太确定你在问什么,但用这样的方式:

\$\s-+\s+\$(?:\s+\w+)+
(?<=\$\s-+\s+\$\s+)\w+(?:\s+\w+)+
您将获得与以下内容匹配的代码:

$ ---------------------------------------------------------
$ ANY ALPHANUMERIC SENTENCES HERE
但你到底想捕捉什么呢

或者,如果您只需要类名,可以这样做:

\$\s-+\s+\$(?:\s+\w+)+
(?<=\$\s-+\s+\$\s+)\w+(?:\s+\w+)+

(?不是答案,但为什么不使用SynWrite编辑器。它有完全可配置的树窗格,也有正则表达式和所有语法颜色。我没弄明白,但它不再困扰我了……我想做的是返回一个
,即使它没有
函数
,所以我仍然有一个锚。我最终学会了整个导航窗格,以便我知道在哪里单击上方或下方,并足够快地到达那里。
(?<=\$\s-+\s+\$\s+)\w+(?:\s+\w+)+