【发布时间】:2014-08-06 06:20:41
【问题描述】:
我正在为 Brackets 定制一个大纲插件,该插件使用正则表达式来识别当前打开文件的大纲。
使用 regex101.com 我创建了以下正则表达式(使用环视来确定该行以七个空格开头并以 'SECTION.' 结尾):
(?<=^ )([A-Za-z\-0-9]*)(?= SECTION\.[ ]*$)
根据 regex101.com 可以,但是当通过 jshint/jslint 验证时,它表明它是无效的。当我测试它时,它不起作用(我怀疑 JSHint/JSLint 是正确的)。
以下是我希望获得 2000-GET-EXPECTED-BY-DATE 和 2020-GET-DUE-DATE 的一些 cobol 代码示例。
...
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.
...
所以我的问题是:
- 正则表达式是否有效?
- 如果无效,那我做错了什么?
- 我应该如何编写正则表达式来查找每个部分的名称?
【问题讨论】:
-
如果前 6 个字符包含行号或版本信息怎么办???。许多 Cobol 编译器会接受前 6 个字符中的任何内容???
-
此外,一个 SECTION 可以后跟一个数字(现在极不可能看到),句号/句号不需要立即跟在它后面。 SECTION 不必与过程名称在同一行,终止它的句号/句点也不必。如果你想要一些通用的东西,那么你就有了更多的内容。如果某些特定于您的系统,那么您就有机会。
-
@BruceMartin 我将它用于已知代码,这些代码在部分名称之前只有空格。
-
@BillWoodger 这是我们遗留代码特有的,我们没有您描述的场景。
-
+1 用于混合正则表达式和 Cobol。
标签: regex cobol regex-lookarounds adobe-brackets