如何匹配不以某个子字符串结尾的字符串?

adr*_*bra 2 regex

我怎样才能编写最终不包含某些字符串的正则表达式.在我的项目中,他们的名字不以某些字符串结尾的所有类如"controller"和"map"应该从基类继承.我怎么能用正则表达式做到这一点?


但同时使用两者

public*.class[a-zA-Z]*(?<!controller|map)$ 
public*.class*.(?<!controller)$ 
Run Code Online (Sandbox Code Playgroud)

没有任何匹配案例!!!

Pet*_*ton 6

搜索与此匹配的所有文件名:

(?<!controller|map|anythingelse)$
Run Code Online (Sandbox Code Playgroud)

(|anythingelse如果没有其他关键字,请删除,或者类似地添加其他关键字.)

如果你不能使用负面的lookbehinds((?<!.. )位),请搜索与此不匹配的文件名:

(?:controller|map)$
Run Code Online (Sandbox Code Playgroud)

如果它仍然不起作用(可能不在某些IDE中),删除?:部分它可能会 - 这只是使它成为一个非捕获组,但这里的差异是相当微不足道的.

如果你正在使用完整字符串必须匹配的东西,那么你可以在上面的任何一个前面加上前缀^.*.


更新:

对此:

但是使用两者都
public*.class[a-zA-Z]*(?<!controller|map)$
public*.class*.(?<!controller)$
没有任何匹配案例!

不太确定你在那里尝试公共/类的东西,所以试试这个:

public.*class.*(?<!controller|map)$`
Run Code Online (Sandbox Code Playgroud)

这.是一个正则表达式字符,表示"除了换行符之外的任何内容",并且*表示零次或多次.

如果这不是您所追求的,请编辑问题并提供更多详细信息.