2017-12-26 31 views
1

이 정규식은 SublimeText 검색 필드에서 작동 구축 승화file_regex 나누기

  • \.가 빨간색으로 강조되며,
  • 빌드 시스템이 인식되지 않습니다.

내가 "file_regex": "([^\/]+\.java)" 줄을 주석 처리 할 때 빌드 시스템이 인식됩니다.

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

질문 : 왜 검색에서 작동하는 정규식이 아닌 .sublime-build 파일에서 작동합니까?

답변

1

.sublime-build 파일은 JSON 파일 형식을 사용합니다.

JSON을 처리하기 위해 백 슬래시를 이스케이프 처리해야하고 백 슬래시를 regex에 전달해야합니다. 이처럼

:

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

빌드 시스템의 파이썬은 우리가 예상 한대로이 글을 읽을 것입니다 자신을 안심하게 파이썬 기본 숭고한 텍스트에 사용되는 것입니다 때문에.

테스트 파이썬 코드 :

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 

내가 그 원하는 출력을 충족 같은데요?