gpt4 book ai didi

regex - 从 Notepad++ 中为 FunctionList 提取函数名称

转载 作者:可可西里 更新时间:2023-11-01 11:44:37 26 4
gpt4 key购买 nike

我正在尝试为 Notepad++ 中的一种新语言设置一个函数列表。为此,我需要在 functionlist.xml 中添加一个解析器。我添加了解析器,它起作用了,但它还在函数列表中添加了实际的词 function。如何从中删除单词功能?我研究了正则表达式的后视功能。但我无法让它发挥作用。

这是解析器。

<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++ 中运行。 (我不能使用任何其他文本编辑器)。预先感谢您的帮助。

enter image description here

这里有额外的帮助。

最佳答案

试试下面的正则表达式:

(?i)(?<=^function)\s+\K\w+

Click for Regex Demo

正则表达式解释:

  • (?i) - 使搜索不区分大小写的修饰符
  • (?<=^function) - 正后向查找紧接在子字符串 function 之前的位置在行首
  • \s+ - 匹配出现 1 次以上的空白字符
  • \K - 忘记到目前为止匹配的所有内容
  • \w+ - 匹配出现次数超过 1 次且属于字符类 [a-zA-Z0-9_] 的所有字符

添加以下 parser标记到文件 functionList.xml

<parser id="mylang" displayName="mylang_syntax">
<function mainExpr="(?i)(?<=^function)\s+\K\w+" />
</parser>

输出

正如您在下面看到的,function 之间的额外空格和 functionName也被忽视 enter image description here

关于regex - 从 Notepad++ 中为 FunctionList 提取函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48410830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com