繁体   English   中英

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

[英]Extract Function name from Notepad++ for FunctionList

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

在此处输入图片说明

这是其他帮助。

像这样尝试

<parser displayName="mylang" id="mylang_syntax">
  <function mainExpr="(?<=function|Function|FUNCTION)[\t ]+[\w]+"/>
</parser>

你得到

在此处输入图片说明

请尝试以下正则表达式:

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

点击查看正则表达式演示

正则表达式说明:

  • (?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>

OUTPUT

如下所示, functionfunctionName之间的多余空格也被忽略 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM