【问题标题】:file_regex breaks sublime buildfile_regex 打破了崇高的构建
【发布时间】:2018-06-06 23:56:25
【问题描述】:

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

([^\/]+\.java)

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

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

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

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

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

【问题讨论】:

    标签: regex sublimetext3 sublimetext2 sublimetext sublime-build


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 2023-03-20
      • 2018-12-15
      相关资源
      最近更新 更多