Index: /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 8481)
+++ /trunk/src/org/openstreetmap/josm/tools/TextTagParser.java	(revision 8482)
@@ -203,5 +203,5 @@
         // Format
         // tag1\tval1\ntag2\tval2\n
-        tags = readTagsByRegexp(buf, "[\\r\\n]+", ".*([a-zA-Z0-9:_]+).*\\t(.*?)", false);
+        tags = readTagsByRegexp(buf, "[\\r\\n]+", ".*?([a-zA-Z0-9:_]+).*\\t(.*?)", false);
                 // try "tag\tvalue\n" format
         if (tags!=null) return tags;
Index: /trunk/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java	(revision 8481)
+++ /trunk/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java	(revision 8482)
@@ -95,3 +95,11 @@
 
     }
+
+    @Test
+    public void testTab() throws Exception {
+        Assert.assertEquals(TextTagParser.readTagsFromText("shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
+        Assert.assertEquals(TextTagParser.readTagsFromText("!shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
+        Assert.assertEquals(TextTagParser.readTagsFromText("!!!shop\tjewelry"), Collections.singletonMap("shop", "jewelry"));
+        Assert.assertEquals(TextTagParser.readTagsFromText("shop\t\t\tjewelry"), Collections.singletonMap("shop", "jewelry"));
+    }
 }
