1

Diese Regex funktioniert im Sublime Text Suchfeld:file_regex Pausen bauen sublimieren

([^\/]+\.java) 

Wenn ich die Regex in einer .sublime-build Datei:

  • \. in rot markiert ist, und
  • die Build-System wird nicht erkannt.

Wenn ich die Zeile "file_regex": "([^\/]+\.java)" auskommentieren, wird das Build-System erkannt.

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

Frage: Warum die Regex, die auf der Suche nicht funktionieren in der .sublime-build Datei funktioniert?

Antwort

1

Die Datei .sublime-build verwendet das JSON-Dateiformat.

Sie müssen Ihren umgekehrten Schrägstrich für JSON umgehen, um es zu behandeln, und den umgekehrten Schrägstrich an Regex übergeben.

So:

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

Da das Build-System verwendet werden wird in der Python zugrunde liegenden Sublime Text ist uns lassen versichern, dass Python wird dies zu lesen, wie wir es erwarten.

Test-Python-Code:

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') 

Ausgang:

aaa.java matched 
aaajava no match 

Ich gehe davon aus, dass entspricht Ihren gewünschten Ausgang?

Verwandte Themen