file_regex ломает возвышенную сборку
Это регулярное выражение работает в поле поиска SublimeText:
([^\/]+\.java)
Если я использую это регулярное выражение в .sublime-build
файл:
\.
выделено красным, и- система сборки не распознается.
Когда я закомментирую строку "file_regex": "([^\/]+\.java)"
система сборки признана.
{
"cmd": ["gradle" , "build"],
"working_dir": "${project_path}",
"file_regex": "([^\/]+\.java)"
}
Вопрос: почему регулярное выражение, которое работает в поиске, не работает в .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
Я предполагаю, что соответствует вашему желаемому результату?