Index: trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java	(revision 2775)
+++ trunk/src/org/openstreetmap/josm/actions/search/PushbackTokenizer.java	(revision 2777)
@@ -73,6 +73,12 @@
             getChar();
             StringBuilder s = new StringBuilder();
-            while (c != -1 && c != '"') {
-                s.append((char)c);
+            boolean escape = false;
+            while (c != -1 && (c != '"' || escape)) {
+                if (c == '\\' && !escape) {
+                    escape = true;
+                } else {
+                    s.append((char)c);
+                    escape = false;
+                }
                 getChar();
             }
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 2775)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 2777)
@@ -138,5 +138,6 @@
                     + "<li>"+tr("<b>parent <i>expr</i></b> - all parents of objects matching the expression")+"</li>"
                     + "<li>"+tr("Use <b>|</b> or <b>OR</b> to combine with logical or")+"</li>"
-                    + "<li>"+tr("Use <b>\"</b> to quote operators (e.g. if key contains :)")+"</li>"
+                    + "<li>"+tr("Use <b>\"</b> to quote operators (e.g. if key contains <b>:</b>)") + "<br/>"
+                    + tr("Within quoted strings the <b>\"</b> and <b>\\</b> characters need to be escaped by a preceding <b>\\</b> (e.g. <b>\\\"</b> and <b>\\\\</b>).")+"</li>"
                     + "<li>"+tr("Use <b>(</b> and <b>)</b> to group expressions")+"</li>"
                     + "</ul></html>");
