file_regex 破坏了 sublime 构建
file_regex breaks sublime build
此正则表达式适用于 SublimeText 搜索字段:
([^\/]+\.java)
如果我在 .sublime-build
文件中使用该正则表达式:
\.
以红色突出显示,
- 无法识别构建系统。
当我注释掉行 "file_regex": "([^\/]+\.java)"
时,构建系统被识别。
{
"cmd": ["gradle" , "build"],
"working_dir": "${project_path}",
"file_regex": "([^\/]+\.java)"
}
问题: 为什么在搜索中有效的正则表达式在 .sublime-build
文件中无效?
.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
我假设满足您想要的输出?
此正则表达式适用于 SublimeText 搜索字段:
([^\/]+\.java)
如果我在 .sublime-build
文件中使用该正则表达式:
\.
以红色突出显示,- 无法识别构建系统。
当我注释掉行 "file_regex": "([^\/]+\.java)"
时,构建系统被识别。
{
"cmd": ["gradle" , "build"],
"working_dir": "${project_path}",
"file_regex": "([^\/]+\.java)"
}
问题: 为什么在搜索中有效的正则表达式在 .sublime-build
文件中无效?
.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
我假设满足您想要的输出?