代码之家  ›  专栏  ›  技术社区  ›  Scorb

file\u regex中断sublime构建

  •  1
  • Scorb  · 技术社区  · 7 年前

    此正则表达式在SublimitText搜索字段中工作:

    ([^\/]+\.java)
    

    如果我在 .sublime-build 文件:

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

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

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

    问题: 为什么在搜索中起作用的正则表达式在搜索中不起作用 .崇高建筑 文件

    1 回复  |  直到 7 年前
        1
  •  1
  •   jwpfox Amit    7 年前

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

    您需要为JSON转义反斜杠来处理它,并将反斜杠传递给regex。

    这样地:

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

    由于构建系统将在Python底层的Sublime文本中使用,所以让我们放心,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
    

    我想这符合你的期望输出?

    推荐文章