Index: trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 8193)
+++ trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 8194)
@@ -57,4 +57,12 @@
     public static void copy(OsmDataLayer source, Collection<OsmPrimitive> primitives) {
         /* copy ids to the clipboard */
+        String ids = getCopyString(primitives);
+        Utils.copyToClipboard(ids);
+
+        Main.pasteBuffer.makeCopy(primitives);
+        Main.pasteSource = source;
+    }
+
+    public static String getCopyString(Collection<? extends OsmPrimitive> primitives) {
         StringBuilder idsBuilder = new StringBuilder();
         for (OsmPrimitive p : primitives) {
@@ -62,9 +70,5 @@
             idsBuilder.append(p.getId()).append(",");
         }
-        String ids = idsBuilder.substring(0, idsBuilder.length() - 1);
-        Utils.copyToClipboard(ids);
-
-        Main.pasteBuffer.makeCopy(primitives);
-        Main.pasteSource = source;
+        return idsBuilder.substring(0, idsBuilder.length() - 1);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 8193)
+++ trunk/src/org/openstreetmap/josm/data/osm/SimplePrimitiveId.java	(revision 8194)
@@ -12,5 +12,5 @@
     private final OsmPrimitiveType type;
 
-    public static final Pattern ID_PATTERN = Pattern.compile("((n(ode)?|w(ay)?|r(el(ation)?)?)/?)(\\d+)");
+    public static final Pattern ID_PATTERN = Pattern.compile("((n(ode)?|w(ay)?|r(el(ation)?)?)[ /]?)(\\d+)");
 
     public SimplePrimitiveId(long id, OsmPrimitiveType type) {
