diff --git a/hspec-core.cabal b/hspec-core.cabal
--- a/hspec-core.cabal
+++ b/hspec-core.cabal
@@ -1,5 +1,5 @@
 name:             hspec-core
-version:          2.1.0
+version:          2.1.1
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2011-2014 Simon Hengel,
diff --git a/src/Test/Hspec/Core/Hooks.hs b/src/Test/Hspec/Core/Hooks.hs
--- a/src/Test/Hspec/Core/Hooks.hs
+++ b/src/Test/Hspec/Core/Hooks.hs
@@ -1,6 +1,7 @@
 -- | Stability: provisional
 module Test.Hspec.Core.Hooks (
   before
+, before_
 , beforeWith
 , beforeAll
 , after
@@ -20,6 +21,10 @@
 -- | Run a custom action before every spec item.
 before :: IO a -> SpecWith a -> Spec
 before action = around (action >>=)
+
+-- | Run a custom action before every spec item.
+before_ :: IO () -> SpecWith a -> SpecWith a
+before_ action = around_ (action >>)
 
 -- | Run a custom action before every spec item.
 beforeWith :: (b -> IO a) -> SpecWith a -> SpecWith b
diff --git a/src/Test/Hspec/Core/Runner.hs b/src/Test/Hspec/Core/Runner.hs
--- a/src/Test/Hspec/Core/Runner.hs
+++ b/src/Test/Hspec/Core/Runner.hs
@@ -47,7 +47,8 @@
 filterSpecs c = go []
   where
     p :: Path -> Bool
-    p = fromMaybe (const True) (configFilterPredicate c)
+    p path = (fromMaybe (const True) (configFilterPredicate c) path) &&
+               not (fromMaybe (const False) (configSkipPredicate c) path)
 
     go :: [String] -> [SpecTree a] -> [SpecTree a]
     go groups = mapMaybe (goSpec groups)
diff --git a/src/Test/Hspec/Options.hs b/src/Test/Hspec/Options.hs
--- a/src/Test/Hspec/Options.hs
+++ b/src/Test/Hspec/Options.hs
@@ -27,6 +27,7 @@
 -- that satisfy the predicate are run.
 , configRerun :: Bool
 , configFilterPredicate :: Maybe (Path -> Bool)
+, configSkipPredicate :: Maybe (Path -> Bool)
 , configQuickCheckSeed :: Maybe Integer
 , configQuickCheckMaxSuccess :: Maybe Int
 , configQuickCheckMaxDiscardRatio :: Maybe Int
@@ -45,6 +46,7 @@
 , configFastFail = False
 , configRerun = False
 , configFilterPredicate = Nothing
+, configSkipPredicate = Nothing
 , configQuickCheckSeed = Nothing
 , configQuickCheckMaxSuccess = Nothing
 , configQuickCheckMaxDiscardRatio = Nothing
@@ -64,6 +66,9 @@
 addMatch :: String -> Config -> Config
 addMatch s c = c {configFilterPredicate = Just (filterPredicate s) `filterOr` configFilterPredicate c}
 
+addSkip :: String -> Config -> Config
+addSkip s c = c {configSkipPredicate = Just (filterPredicate s) `filterOr` configSkipPredicate c}
+
 setDepth :: Int -> Config -> Config
 setDepth n c = c {configSmallCheckDepth = n}
 
@@ -118,6 +123,7 @@
 options = [
     Option   []  ["help"]             (NoArg (const $ Left Help))         (h "display this help and exit")
   , mkOption "m"  "match"             (Arg "PATTERN" return addMatch)     (h "only run examples that match given PATTERN")
+  , mkOption []   "skip"              (Arg "PATTERN" return addSkip)      (h "skip examples that match given PATTERN")
   , Option   []  ["color"]            (NoArg setColor)                    (h "colorize the output")
   , Option   []  ["no-color"]         (NoArg setNoColor)                  (h "do not colorize the output")
   , mkOption "f"  "format"            (Arg "FORMATTER" readFormatter setFormatter) formatHelp
diff --git a/test/Test/Hspec/Core/RunnerSpec.hs b/test/Test/Hspec/Core/RunnerSpec.hs
--- a/test/Test/Hspec/Core/RunnerSpec.hs
+++ b/test/Test/Hspec/Core/RunnerSpec.hs
@@ -268,6 +268,22 @@
               H.it "example 3" $ mockAction e3
         (,,) <$> mockCounter e1 <*> mockCounter e2 <*> mockCounter e3 `shouldReturn` (1, 1, 0)
 
+      it "only runs examples that match a given pattern (-m and --skip combined)" $ do
+        e1 <- newMock
+        e2 <- newMock
+        e3 <- newMock
+        e4 <- newMock
+        silence . withArgs ["-m", "/bar/example", "--skip", "example 3"] . H.hspec $ do
+          H.describe "foo" $ do
+            H.describe "bar" $ do
+              H.it "example 1" $ mockAction e1
+              H.it "example 2" $ mockAction e2
+              H.it "example 3" $ mockAction e3
+            H.describe "baz" $ do
+              H.it "example 4" $ mockAction e4
+        (,,,) <$> mockCounter e1 <*> mockCounter e2 <*> mockCounter e3 <*> mockCounter e4
+          `shouldReturn` (1, 1, 0, 0)
+
       it "can be given multiple times" $ do
         e1 <- newMock
         e2 <- newMock
