另一个正则表达式帮助不匹配单词

时间:2016-07-07 06:37:48

标签: java regex regex-greedy

我需要的是在代码中找到所有获取某些实体(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(a)不能清除对象a但是下面的方法不匹配

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

因为此处a已从会话中清除。

1 个答案:

答案 0 :(得分:1)

你快到了那里:

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

请参阅demo