排除前缀和后缀的正则表达式

Regex expression to exclude both prefix and suffix

我正在尝试构建一个表达式,它将匹配所有文本 EXCLUDING 带有前缀 'abc' AND 后缀 'def'(只有前缀后缀的文本)。

我试过以下方法: ^(?!([a][b][c]])).*(?!([d][e][f])$),但它不匹配只有一个条件的文本(即 abc.xxx 失败,以及 xxx.pdf,尽管它们应该通过)

我知道答案与 'look behind' 有关,但我仍然不太确定如何实现此行为

我还尝试了以下方法: ^(?<!([a][b][c])).*(?!([d][e][f])$),但同样,运气不佳

^((abc.*\.(?!def))|((?!abc).*\.def))$

我认为可以有一个更简单的解决方案,但这个解决方案会如您所愿。

[a][b][c]可以简化为abcdef也是如此。 模式的第一部分匹配 abc.*\. 而末尾没有 def。 第二部分匹配没有前缀 abc.

.*\.def

这是模式的直观表示:

Debuggex Demo

保持简单并将其组合成一个前瞻性检查两个条件:

^(?!abc.*def$).*