[OSM-talk-fr] JOSM et validation rule : bug avec regexp_match ? — Re: Nettoyage des clés mapillary

PanierAvide panieravide at riseup.net
Mar 5 Nov 16:57:37 UTC 2019


Bien vu ! J'ai pu modifier en conséquence la règle pour le tag mapillary 
sur https://josm.openstreetmap.de/wiki/Rules/Pictures

Adrien P.

Le 05/11/2019 à 12:39, Yves P. a écrit :
> Bonjour,
>
>> Le 3 nov. 2019, PanierAvide  a écrit :
>>
>> Sur le modèle du fichier MapCSS pour les tags Wikimedia, on peut 
>> ajouter une règle avec un "regexp_match" pour rechercher/remplacer 
>> automatiquement. Pour une raison qui m'échappe, la règle suivante qui 
>> devrait faire le boulot ne fonctionne pas (pour tester, créer un nœud 
>> avec le tag 
>> mapillary=https://www.mapillary.com/app/?lat=49.18298900000002&lng=-2.1090169999999944&z=17&pKey=XCcwknc5F9zgqs6GKBUFig) 
>> :
>>
>> |*[mapillary][mapillary!~/^[a-zA-Z0-9_-]{22}$/][mapillary=~/pKey=[a-zA-Z0-9_-]{22}/] 
>> {||
>> ||    throwError: tr("mapillary tag should only contain image ID 
>> instead of full URL");||
>> ||    fixAdd: concat("mapillary=", 
>> get(regexp_match("pKey=([a-zA-Z0-9_-]{22})", tag("mapillary")),1));||
>> ||}|
>>
>> Si un expert JOSM/MapCSS peut nous éclairer là-dessus... :-)
>>
>>
> En fait, c’est comme si il manquait le flag « g ».
> L’expression « *pKey=(.*)* » ne fonctionne pas, mais « *.*pKey=(.*).* 
> *» oui !!
>
> La doc 
> <https://josm.openstreetmap.de/wiki/Help/Styles/MapCSSImplementation> parle 
> de flag i, m ou s.
> Flags is a string that may contain "i" (case insensitive), "m" 
> (multiline) and "s" ("dot all »)
> Idem pour Javadoc 
> <https://josm.openstreetmap.de/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#regexp_match-java.lang.String-java.lang.String-java.lang.String->
>
> Il y a plus de flags décrit ici 
> <https://josm.openstreetmap.de/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#regexp_match-java.lang.String-java.lang.String-java.lang.String-> : 
>
>
>     |flags| - Match flags, a bit mask that may include
>     |CASE_INSENSITIVE|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#CASE_INSENSITIVE>,
>     |MULTILINE|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#MULTILINE>,
>     |DOTALL|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#DOTALL>,
>     |UNICODE_CASE|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNICODE_CASE>,
>     |CANON_EQ|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#CANON_EQ>,
>     |UNIX_LINES|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNIX_LINES>,
>     |LITERAL|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#LITERAL>,
>     |UNICODE_CHARACTER_CLASS|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#UNICODE_CHARACTER_CLASS> and
>     |COMMENTS|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#COMMENTS>
>
> Le flag g de Perl est implicite d’après la doc :
>
>  *
>
>     Perl uses the g flag to request a match that resumes where the
>     last match left off. This functionality is provided implicitly by
>     the |Matcher|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html> class:
>     Repeated invocations of the |find|
>     <https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html#find--> method
>     will resume where the last match left off, unless the matcher is
>     reset.
>
> C’est comme si l’expression régulière était évaluée différemment par 
> regexp_match et MapCSS ??
>
>> Yves
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20191105/f77856c6/attachment.htm>


Plus d'informations sur la liste de diffusion Talk-fr