JOSM: Suche nach Key NICHT wie ...

Hallo,
ich möchte in JOSM Nodes / Ways / Relations finden, in denen ein Schlüsselwert NICHT einem definierten Muster etspricht, z.B.

"phone"-"+49*"

wobei das Minus-Zeichen (-) das in den “Kombinationen” angebene Zeichen für “Logische Negation” ist. Sobald ich aber für die Syntax “Regulärer Ausdruck” wähle, kommt eine Fehlermeldung.
Wie mache ich es richtig?

Eine RegEx für die Regel “fängt mit Plus Vier Neun an und danach kommt Beliebiges” (das meinst du wahrscheinlich) lautet so:

^\+49
  • ^ heißt “am Anfang”.
  • ein unmaskiertes Pluszeichen heißt in RegEx “eines oder viele davon” und ergibt ganz am Anfang keinen Sinn. Wenn du wörtlich das Pluszeichen meinst, muss ein \ davor.
  • das, was du mit dem Stern vermutlich meinst, nämlich “beliebig viele beliebige Zeichen” heißt in RegEx .* (Punkt = beliebiges Zeichen, Stern = beliebig viele Vorkommen (inkl. null) des davorstehenden Teilausdrucks). Aber am Schluss kannst du dir das sparen, weil es reicht, wenn die RegEx auf einen Teilstring matcht.

Dies sollte funzen (mit normaler Suche)

phone=* AND -(phone~^\+49)

Das AND kann man weglassen, macht es aber lesbarer

Danke, funktioniert aber leider nicht; ich habe:

  • Einen node mit phone entsprechend geändert (aber nicht hochgeladen)
  • Die Suche (Syntax = Standard) ausgeführt: Nichts gefunden …

Bei mir findet diese Suche alle Objekte, die das Tag phone haben aber nicht mit dem +49 beginnend. Das wolltest Du doch, oder?
Edit: Das geht auch noch einfacher ganz ohne regex:

phone=* -phone:+49

Du hast recht, es funktioniert wenn der node hochgeladen ist (was ja normalerweise der Fall ist). Für meinen Test hatte ich gedacht, dass eine lokale Änderung ausreichend ist. Das genügt aber nicht …
Danke!

Hochladen sollte nichts am Ergebnis ändern.

Achtung, Augenkrebs Gefahr!

Alles was ein phone hat ohne die, bei denen im Wert +43 vorkommt

phone: -phone:+43

Regulärer Ausdruck, alles bei dem der Wert von phone mit +43 beginnt

phone~\^\\+43.+

Regulärer Ausdruck, alles bei dem der Wert von phone nicht mit +43 beginnt

phone~\^\(\?!\\+43\).+

Geht alles mit “Standard Suchsyntax”, dass man Regex will wird von der Tilde gesagt.

Oops, stimmt, : findet nicht nur am Anfang, das hatte ich falsch in Erinnerung

Wenn man nach vermurksten Telefonnummern sucht, dann eignet sich das vielleicht sogar besser.

Wenn man nach vermurksten Telefonnummern sucht, muss man in OSM leider immer auch an contact:phone=* (mit)denken, vgl. nebenan
https://forum.openstreetmap.org/viewtopic.php?id=75249

Alle obigen Suchen in JOSM finden diese auch. Ob eine overpass Abfrage, das kann ich nicht beantworten, weil das war heut Mittag defunct.