2016-07-07 135 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