如何在不使用捕获组的情况下使REGEX模式仅匹配特定单词?

时间:2016-07-20 19:52:43

标签: regex boost notepad++

使用regex(perl)提取函数名和参数时遇到一些困难 在以下声明中

(defun foo#bar (arg1 arg2/param1 param2) 
       ;function definition goes here
)
  我正在寻找的正则表达式模式应匹配 ONLY

     
    

foo #bar arg1 arg2

  

我知道\K此时要重置匹配的文字。例如,匹配" foo \ Kbar"不会匹配bar"。 它将匹配" foobar",但会假装只有" bar"匹配。

所以在我的情况下使用\ K会给出

(defun \K.*\(.*\/ - >我需要foo#bar (arg1 arg2/

foo#bar arg1 arg2

我不知道如何隔离"("和" /"不使用捕获组)之间的以下参数(0到n次出现)。

感谢您的回复

关于"为什么"

的更多信息

我试图使用functionList.xml文件在Notepad ++中解析用户定义的语言

<parser id="my_language_name" displayName="My language" commentExpr=";">
                <function
                    mainExpr="\(defun.*\(.*/.*\)"
                    displayMode="$functionName">
                    <functionName>
                        <nameExpr expr="(?<=\(defun).*(?= \()."/>
                    </functionName>
                </function>
</parser>

我尝试在nameExpr节点中使用捕获组,直到现在都没有运气。

0 个答案:

没有答案