Index: src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java	(revision 4913)
+++ src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java	(working copy)
@@ -8,6 +8,7 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.KeyEvent;
+import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.HashMap;
 import java.util.Map;
@@ -596,8 +597,16 @@
             try {
                 final TableRowSorter<TableModel> sorter =
                     ((TableRowSorter<TableModel> )shortcutTable.getRowSorter());
-                if (expr==null) sorter.setRowFilter(null);
-                    else  sorter.setRowFilter(  RowFilter.regexFilter(expr) );
+                if (expr == null) {
+                    sorter.setRowFilter(null);
+                } else {
+                    // split search string on whitespace, do case-insensitive AND search
+                    ArrayList<RowFilter<Object, Object>> andFilters = new ArrayList<RowFilter<Object, Object>>();
+                    for (String word : expr.split("\\s+")) {
+                        andFilters.add(RowFilter.regexFilter("(?i)" + word));
+                    }
+                    sorter.setRowFilter(RowFilter.andFilter(andFilters));
+                }
             }
             catch (PatternSyntaxException ex) { }
             catch (ClassCastException ex2) { /* eliminate warning */  }
