2015-05-18 176 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

你需要更多幫助嗎?如果解決方案建議適合您,請考慮接受答案。 –