2016-07-07 406 views
0

我需要的是在代碼中找到所有獲取某個實體(A,B,C,D,E ..)的方法(findBy,fetchUnique ..等)不清除會話,因此所有代碼都以findBy,fetchUnique開頭,並且不清除會話。另一個正則表達式的幫助不匹配單詞

所以我有如下這個表達式:

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

而且它不工作,任何建議都歡迎。

更新:所以增加更多的細節要求

可以說我有下面的方法:

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

這應該匹配,因爲對象沒有通過調用dao.clear(一),但低於清除方法不應該匹配

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

因爲這裏是從會話中清除的。

+3

請告訴我們採樣輸入你想匹配的內容。 –

+1

這不會修復你的正則表達式,但是由於我們還不知道什麼是預期的輸入/輸出,只是一個小的改進:'A | B | C | D | E | F | G | H | I'能被更短的'[AI]'取代。 –

+3

感謝您的回覆,但A,B,C等都是象徵性的,不是字母表,我沒有寫出確切的代碼,他們代表實體。 –

回答

1

你幾乎有:

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

看到demo

+0

感謝偉大的工作,我錯過了量詞。 –

+0

它只能在一次輸入的單個方法上起作用。 – revo

相關問題