diff --git a/plugins/Debian.py b/plugins/Debian.py
index 33625187a..a9c2ab10e 100644
--- a/plugins/Debian.py
+++ b/plugins/Debian.py
@@ -38,6 +38,7 @@ from baseplugin import *
 import re
 import gzip
 import sets
+import getopt
 import popen2
 import random
 import fnmatch
@@ -204,20 +205,41 @@ class Debian(callbacks.Privmsg, PeriodicFileDownloader):
             (numberOfPackages, len(responses), ', '.join(responses))
         irc.reply(msg, s)
 
-    _incomingRe = re.compile(r'', re.I)
+    _incomingRe = re.compile(r'', re.I)
     def debincoming(self, irc, msg, args):
-        """
+        """[--{regexp,arch}=] []
         
-        checks debian incoming for specified package name"""
-        pkgname = privmsgs.getArgs(args) 
+        Checks debian incoming for a matching package name.  The arch
+        parameter defaults to i386; --regexp returns only those package names
+        that match a given regexp, and normal matches use standard *nix
+        globbing.
+        """
+        (optlist, rest) = getopt.getopt(args, '', ['regexp=', 'arch='])
+        predicates = []
+        archPredicate = lambda s: ('_i386.' in s)
+        for (option, arg) in optlist:
+            if option == '--regexp':
+                try:
+                    r = utils.perlReToPythonRe(arg)
+                    predicates.append(r.search)
+                except ValueError:
+                    irc.error('%r is not a valid regexp.' % arg)
+                    return
+            elif option == '--arch':
+                arg = '_%s.' % arg
+                archPredicate = lambda s, arg=arg: (arg in s)
+        predicates.append(archPredicate)
+        for arg in rest:
+            predicates.append(lambda s: fnmatch.fnmatch(s, arg))
         packages = []
         fd = urllib2.urlopen('http://incoming.debian.org/')
         for line in fd:
             m = self._incomingRe.search(line)
             if m:
                 name = m.group(1)
-                if fnmatch.fnmatch(name, pkgname):
-                    packages.append(name)
+                if all(lambda p: p(name), predicates):
+                    realname = utils.rsplit(name, '_', 1)[0]
+                    packages.append(realname)
         if len(packages) == 0:
             irc.error(msg, 'No packages matched that search.')
         else: