Re: perl Regexp für printable Unicode Characters
Hallo Marc,
02.11.2024 19:05:44 Marc Haber <mh+debian-user-german@zugschlus.de>:
> On Thu, 31 Oct 2024 22:21:20 +0100 (GMT+01:00), dh@dhaller.de wrote:
>> Ein erster (defensiver) Stupser:
>> ====
>> use v5.14;
>> # ...
>> qr/[\w\d\.+!\$%&()\]\[;\/{}>*'@_-]+/aai;
>> ====
>
> Hurga. Das ist aber schwere Kost, daran muss ich erstmal kauen. Kann
> ein paar Tage dauern.
Jo.
>> da fehlt ggfs. noch was ;) RTFM: 'perldoc perlre', Abschnitt "Modifiers",
>> (bes. "Character set modifiers"), Abschnitt
>> "Regular Expressions" (bes. "Escape sequences"
>> und "Character Classes and other Special Escapes")
>
> Das ist mir zu theoretisch ;-) /aa ist restriktiver als /a, und das
> soll mir helfen?
So wie ich das lese schon...
'perldoc perlunicode' hat auch ne Übersicht.
>> sowie 'perldoc perlrecharclass'.
>
> Interessant wären hier die Unicode Properties. Gibt es da vielleicht
> eine Property "printable" oder "word character"?
Jep.
> Können wir davon
> ausgehen dass es jenseits der 256 keine "bösen" Zeichen mehr gibt, die
> man definitiv nicht in einem Usernamen haben möchte? Vermutlich nicht,
> weil es gibt doch z.B. Zeichen die die Schreibrichtung umschalten, und
> die verschieden langen Spaces will man glaube ich auch nicht?
Genau.
> Um perlunicode, perlunitut und perluniintro zu lesen brauch ich auch
> eine Weile. Eine vorgekaut funktionierende Lösung würde ich auch
> nehmen.
Kann sein ich habs gefunden:
"\p{Graph}"
Matches any character that is graphic.
Theoretically, this means a character that on a
printer would cause ink to be used.
Evtl. noch
"\p{Word}"
This is the same as "\w", including over 100_000
characters beyond ASCII.
oder
\p{L} # Letters
\p{N} # Numbers
\p{S} # Symbols
\p{P} # Punctuation
Also:
qr/^[\p{Graph}]+$/aa;
qr/^[\p{L}\p{N}\p{S}\p{P}]+$/aa;
ggfs. noch die Emojis \p{Emoticons}.
Zumindest versteh ich die Doku so.
Und dann gibts seit v5.18 Mengen Ops, siehe 'Extended Bracketed Character Classes' in perlrecharclass, z.B.
qr/^(?[ \p{print} - ( \p{Space} + \p{Private_Use} ) ])+$/aa;
Ich blick da aber auch nicht ganz durch.
HTH,
-dnh
Reply to: