我正在尝试在 Notepad ++ 中为新语言设置功能列表。为此,它需要我在functionlist.xml
中添加解析器。我添加了解析器,它可以工作,但它还在函数列表中添加了实际的单词function
。如何从中删除单词功能?我已经研究了正则表达式的lookbehind功能。但我无法使其发挥作用。
这是解析器。
<parser displayName="mylang" id="mylang_syntax">
<function mainExpr="^\s*(function|Function|FUNCTION)[\t ]+[\w]+">
<functionName>
<NameExpr expr="/(?<=^function /)[\w]+" />
<NameExpr expr="/(?<=^Function /)[\w]+" />
<nameexpr expr="/(?<=^FUNCTION /)[\w]+" />
</functionName>
</function>
</parser>
以下是试用的示例文字。
FUNCTION uniqn, input_array
IF(!DEBUG) THEN PRINT, 'uniqn_no_sort'
counter = 0L
length = n_elements(input_array(*, 0))
duplicate_array = STRARR(length)
END
function get_algorithm_type, type
IF(!DEBUG) THEN PRINT, 'get_algorithm_type'
print, type
END
这就是它在功能列表侧栏中的样子。我想删除“功能”这个词。 请注意它需要在Notepad ++中工作。 (我不能使用任何其他文本编辑器)。预先感谢您的帮助。
以下是其他帮助。
答案 0 :(得分:1)
尝试这样
<parser displayName="mylang" id="mylang_syntax">
<function mainExpr="(?<=function|Function|FUNCTION)[\t ]+[\w]+"/>
</parser>
你得到了
答案 1 :(得分:1)
试试下面的正则表达式:
(?i)(?<=^function)\s+\K\w+
<强> Click for Regex Demo 强>
正则表达式说明:
(?i)
- 用于使搜索不区分大小写的修饰符(?<=^function)
- 在行首处找到紧跟在子字符串function
之前的位置的正面后视\s+
- 匹配1个以上的空格字符\K
- 忘记目前为止匹配的所有内容\w+
- 匹配属于字符类[a-zA-Z0-9_]
的所有字符的1 +次出现将以下parser
标记添加到文件functionList.xml
<parser id="mylang" displayName="mylang_syntax">
<function mainExpr="(?i)(?<=^function)\s+\K\w+" />
</parser>
<强>输出强>