Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3841)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 3842)
@@ -418,5 +418,5 @@
             String def = default_;
 
-            String[] value_array = values.split(",");
+            String[] value_array = splitEscaped(values);
             String[] display_array;
             String[] short_descriptions_array = null;
@@ -556,9 +556,22 @@
         // "A\, B\, C,one\, two" --> ["A, B, C", "one, two"]
         private static String[] splitEscaped(String s) {
-            String[] res = s.replaceAll("\\\\,", "\u0091").split(",");
-            for (int i=0; i<res.length; ++i) {
-                res[i] = res[i].replaceAll("\u0091", ",");
-            }
-            return res;
+            List<String> result = new ArrayList<String>();
+            boolean backslash = false;
+            StringBuffer item = new StringBuffer();
+            for (int i=0; i<s.length(); i++) {
+                char ch = s.charAt(i);
+                if (backslash) {
+                    item.append(ch);
+                    backslash = false;
+                } else if (ch == '\\') {
+                    backslash = true;
+                } else if (ch == ',') {
+                    result.add(item.toString());
+                    item.setLength(0);
+                } else {
+                    item.append(ch);
+                }
+            }
+            return result.toArray(new String[result.size()]);
         }
 
