1

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

([^\/]+\.java)

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

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

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

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

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

4

1 回答 1

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

我假设这符合您想要的输出?

于 2018-01-05T04:34:54.907 回答