file_regex打破了崇高的构建

时间:2017-12-26 03:04:22

标签: regex sublimetext3 sublimetext2 sublimetext sublime-build

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

([^\/]+\.java)

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

  • \.以红色突出显示,
  • 无法识别构建系统。

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

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

问题:为什么搜索中使用的正则表达式不适用于.sublime-build文件?

1 个答案:

答案 0 :(得分:1)

.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

我认为符合你想要的输出?