2016-07-07 11 views
0

Was ich brauche, ist in Code alle Methoden zu finden, die einige Entität (A, B, C, D, E ..) mit Aufruf wie (findBy, fetchUnique .. usw.) holen, aber don Löschen Sie die Sitzung nicht, so dass der gesamte Code vor findBy, fetchUnique und nicht nach dem Löschen der Sitzung steht.Eine weitere Regex-Hilfe für nicht übereinstimmendes Wort

So habe ich diese Regex wie folgt:

\w*(A|B|C|D|E|F|G|H|I).*(?=\.findBy)((?s)(?!\.clear\()) 

Und es funktioniert nicht, irgendwelche Vorschläge sind willkommen.

Update: So das Hinzufügen von mehr Details wie gewünscht

Lets sagen, dass ich eine Methode unter:

public Long test(){ 
    A a = dao.findByKey(key); 
    ....//use a here 
    .... 
    .... 
    return xyz; 
} 

Dies soll da passen Objekt einer durch den Aufruf dao.clear nicht gelöscht (a), aber unter Methode sollte nicht übereinstimmen

public Long test(){ 
    A a = dao.findByKey(key); 
    ....//use a here 
    .... 
    .... 
    dao.clear(a); 
    return xyz; 
} 

weil hier eine Sitzung gelöscht wird.

+3

uns Eingangsabtastwert Bitte zeigen und was Sie passen wollen. –

+1

Dies wird Ihre Regex nicht beheben, aber da wir noch nicht wissen, was die erwartete Eingabe/Ausgabe ist, nur eine kleine Verbesserung: 'A | B | C | D | E | F | G | H | I 'kann ersetzt werden durch '[AI]', das kürzer ist. –

+3

Danke für die Antwort, aber A, B, C usw. sind symbolisch hier nicht Alphabet, ich schreibe nicht genauen Code, sie repräsentieren Entitäten. –

Antwort

1

Sie es fast geschafft wurden:

\w*(A|B|C|D|E|F|G|H|I).*(?=\.findBy)(?!(?s).*\.clear\() 
              ||<= here's the diff 

siehe demo

+0

Dank Arbeit großartig, ich habe diesen Quantifizierer vermisst. –

+0

Es funktioniert nur mit einer einzigen Methode, die als Eingabe zu einem Zeitpunkt angegeben wird. – revo