file_regex 破坏了 sublime 构建

file_regex breaks sublime build

此正则表达式适用于 SublimeText 搜索字段:

([^\/]+\.java)

如果我在 .sublime-build 文件中使用该正则表达式:

当我注释掉行 "file_regex": "([^\/]+\.java)" 时,构建系统被识别。

{
  "cmd": ["gradle" , "build"],
  "working_dir": "${project_path}",
  "file_regex": "([^\/]+\.java)"
}

问题: 为什么在搜索中有效的正则表达式在 .sublime-build 文件中无效?

.sublime-build 文件使用 JSON 文件格式。

您需要转义您的反斜杠以便 JSON 处理它并将反斜杠传递给正则表达式。

像这样:

"file_regex": "([^\/]+\.java)"

由于构建系统将在 Python 底层 Sublime Text 中使用,让我们放心 Python 将按我们的预期读取它。

测试Python代码:

import re

builddict = {
  "cmd": ["gradle" , "build"],
  "working_dir": "${project_path}",
  "file_regex": "([^\/]+\.java)"
}

re_pattern = builddict['file_regex']
prog = re.compile(re_pattern)

teststrings = ['aaa.java', 'aaajava']

for teststring in teststrings:
    result = prog.search(teststring)

    if result is None:
        print(teststring + ' no match')
    else:
        print(teststring + ' matched')

输出:

aaa.java matched
aaajava no match

我假设满足您想要的输出?