2015-05-18 120 views
1

我正在尝试处理将重构我的系统的一段代码。 所以我会阅读我所有的课程,并找到所有使用正则表达式调用管理器的课程或对象。 我想这样做只为我写的类,所以我不想找到BeanManagerEntityManager类。查找与pattern1匹配的字符串,但不匹配pattern2

目前我正则表达式是

/([a-zA-Z]*)Manager/ 

这工作不错,但BeanManagerEntityManager也包括在内。

我发现了这样一个问题:Regular expression to match a line that doesn't contain a word?。在这种情况下,OP希望找到任何与图案不匹配的东西,但在我的情况下,我希望找到与图案匹配的所有东西,除非它匹配第二种图案

有什么办法可以做到这一点吗?

对不起,我忘了例子

我想包括像

MyManager事情

myManager

ClientManager

clientManager

TestManager的

TestManager的

,但不包括

BeanManager

的EntityManager

+0

请附上你想配什么一些例子,你会不喜欢匹配。 – npinti

回答

2

与负先行用字边界排除要化合物忽略:

\b(?!Bean|Entity)([a-zA-Z]*)Manager\b 

demo

+0

谢谢,我非常接近,但错过了\ b 这是一种救命,我会尽快接受 – JSBach

+0

在这里的大多数例子中,你会看到使用'^'和'$ '锚点,但是'\ b'是一个很好的替代品,它将一个匹配锚定在一个更大的字符串中。很高兴它有帮助。 –

+0

你需要更多帮助吗?如果解决方案建议适合您,请考虑接受答案。 –