我正在为 Brackets 定制一个大纲插件,它使用正则表达式来识别当前打开的文件的大纲。
我使用 regex101.com 创建了以下正则表达式(使用环视来确定该行以七个空格开头并以“SECTION.”结尾):
(?<=^ )([A-Za-z\-0-9]*)(?= SECTION\.[ ]*$)
根据 regex101.com 的说法,这是可以的,但是当通过 jshint/jslint 验证时,它声明它无效。当我测试它时,它不起作用(我怀疑 JSHint/JSLint 是正确的)。
以下是一些 Cobol 代码的示例,我希望在其中获得 2000-GET-EXPECTED-BY-DATE 和 2020-GET-DUE-DATE。
...
2000-GET-EXPECTED-BY-DATE SECTION.
MOVE '2' TO W10-OPTION.
...
ELSE
MOVE 'Y' TO W10-NO-ERRORS
END-IF.
2017-EXIT.
EXIT.
/
2020-GET-DUE-DATE SECTION.
2020.
MOVE 'N' TO W10-USER-INPUT-DUE-DATE-SW.
MOVE '1' TO W10-OPTION.
...
所以我的问题是:
- 正则表达式是否有效?
- 如果无效,那我做错了什么?
- 我应该如何编写正则表达式来查找每个部分的名称?
最佳答案
这对我来说很有用,可以找到带有“SECTION”的行:
^[ ]{7}(.*)[ ]SECTION\.$
演示: http://regex101.com/r/zC1xY6/2
如果您只想要部分名称:^[ ]{7}\d+\-(.*)[ ]SECTION\.$
关于标识 COBOL 中部分的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25153472/