Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8265)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 8266)
@@ -147,5 +147,5 @@
         /**
          * Creates the fixing {@link Command} for the given primitive. The {@code matchingSelector} is used to
-         * evaluate placeholders (cf. {@link org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.TagCheck#insertArguments(Selector, String)}).
+         * evaluate placeholders (cf. {@link org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.TagCheck#insertArguments(Selector, String, OsmPrimitive)}).
          */
         abstract Command createCommand(final OsmPrimitive p, final Selector matchingSelector);
@@ -167,5 +167,5 @@
                 return null;
             }
-            return TagCheck.insertArguments(matchingSelector, s);
+            return TagCheck.insertArguments(matchingSelector, s, p);
         }
 
@@ -386,9 +386,9 @@
          * {@link org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector}.
          */
-        static String determineArgument(Selector.GeneralSelector matchingSelector, int index, String type) {
+        static String determineArgument(Selector.GeneralSelector matchingSelector, int index, String type, OsmPrimitive p) {
             try {
                 final Condition c = matchingSelector.getConditions().get(index);
                 final Tag tag = c instanceof Condition.KeyCondition
-                        ? ((Condition.KeyCondition) c).asTag()
+                        ? ((Condition.KeyCondition) c).asTag(p)
                         : c instanceof Condition.SimpleKeyValueCondition
                         ? ((Condition.SimpleKeyValueCondition) c).asTag()
@@ -417,7 +417,7 @@
          * key/value/tag of the {@code index}-th {@link Condition} of {@code matchingSelector}.
          */
-        static String insertArguments(Selector matchingSelector, String s) {
+        static String insertArguments(Selector matchingSelector, String s, OsmPrimitive p) {
             if (s != null && matchingSelector instanceof Selector.ChildOrParentSelector) {
-                return  insertArguments(((Selector.ChildOrParentSelector)matchingSelector).right, s);
+                return insertArguments(((Selector.ChildOrParentSelector)matchingSelector).right, s, p);
             } else if (s == null || !(matchingSelector instanceof GeneralSelector)) {
                 return s;
@@ -426,5 +426,5 @@
             final StringBuffer sb = new StringBuffer();
             while (m.find()) {
-                final String argument = determineArgument((Selector.GeneralSelector) matchingSelector, Integer.parseInt(m.group(1)), m.group(2));
+                final String argument = determineArgument((Selector.GeneralSelector) matchingSelector, Integer.parseInt(m.group(1)), m.group(2), p);
                 try {
                     // Perform replacement with null-safe + regex-safe handling
@@ -501,5 +501,5 @@
          */
         String getDescriptionForMatchingSelector(OsmPrimitive p, Selector matchingSelector) {
-            return insertArguments(matchingSelector, getDescription(p));
+            return insertArguments(matchingSelector, getDescription(p), p);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 8265)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 8266)
@@ -4,4 +4,5 @@
 import java.text.MessageFormat;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.Objects;
@@ -340,6 +341,13 @@
         }
 
-        public Tag asTag() {
-            return new Tag(label);
+        public Tag asTag(OsmPrimitive p) {
+            String key = label;
+            if (KeyMatchType.REGEX.equals(matchType)) {
+                final Collection<String> matchingKeys = Utils.filter(p.keySet(), containsPattern);
+                if (!matchingKeys.isEmpty()) {
+                    key = matchingKeys.iterator().next();
+                }
+            }
+            return new Tag(key, p.get(key));
         }
 
