diff --git a/pkg/iter/iterator.go b/pkg/iter/iterator.go
index 4d47ddd2a010b6083a9a804cf76a642633673259..9112b133a5b4bc4fc7c3e55b20b0fc31d3ff6aa6 100644
--- a/pkg/iter/iterator.go
+++ b/pkg/iter/iterator.go
@@ -4,7 +4,6 @@ import (
 	"container/heap"
 	"fmt"
 	"io"
-	"regexp"
 	"sort"
 	"time"
 
@@ -298,6 +297,7 @@ type filter struct {
 	f func(string) bool
 }
 
+// NewFilter builds a filtering iterator.
 func NewFilter(f func(string) bool, i EntryIterator) EntryIterator {
 	return &filter{
 		f:             f,
@@ -314,32 +314,6 @@ func (i *filter) Next() bool {
 	return false
 }
 
-type regexpFilter struct {
-	re *regexp.Regexp
-	EntryIterator
-}
-
-// NewRegexpFilter returns an iterator that filters entries by regexp.
-func NewRegexpFilter(r string, i EntryIterator) (EntryIterator, error) {
-	re, err := regexp.Compile(r)
-	if err != nil {
-		return nil, err
-	}
-	return &regexpFilter{
-		re:            re,
-		EntryIterator: i,
-	}, nil
-}
-
-func (i *regexpFilter) Next() bool {
-	for i.EntryIterator.Next() {
-		if i.re.MatchString(i.Entry().Line) {
-			return true
-		}
-	}
-	return false
-}
-
 type nonOverlappingIterator struct {
 	labels    string
 	i         int
diff --git a/pkg/querier/store.go b/pkg/querier/store.go
index 3daa182337e515adb7e3f165088add37700e44f4..3e8ca7f0d4584c582d75d7f056a76827d4b1b50c 100644
--- a/pkg/querier/store.go
+++ b/pkg/querier/store.go
@@ -112,12 +112,6 @@ func buildHeapIterator(ctx context.Context, req *logproto.QueryRequest, chks [][
 			if err != nil {
 				return nil, err
 			}
-			if req.Regex != "" {
-				iterator, err = iter.NewRegexpFilter(req.Regex, iterator)
-				if err != nil {
-					return nil, err
-				}
-			}
 			iterators = append(iterators, iterator)
 		}