Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

POSIX ERE für Steuerzeichen

2 views
Skip to first unread message

Michael Bäuerle

unread,
Apr 25, 2018, 9:38:36 AM4/25/18
to
Ein ERE soll auf obs-NO-WS-CTL [1] matchen. Ich suche etwas in der Art:

[\x1-\x8\xB\xC\xE-\x1F]

Das ist aber nicht POSIX konform [2]:
|
| 1. [...] The special characters '.', '*', '[', and '\\' ( <period>,
| <asterisk>, <left-square-bracket>, and <backslash>, respectively)
| shall lose their special meaning within a bracket expression.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Übersehe ich eine andere Option? Eine die hübscher ist als:

\x1|\x2|\x3|\x4|\x5|\x6|\x7|\x8|\xB|\xC|\xE|\xF|\10|\11|\12|\13|\14|\15|\16|\17|\18|\19|\1A|\1B|\1C|\1D|\1E|\1F


_________________
[1] <https://tools.ietf.org/html/rfc5322#section-4.1>
[2] <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_05>

Michael Bäuerle

unread,
Apr 25, 2018, 9:40:51 AM4/25/18
to
Ein ERE soll auf obs-NO-WS-CTL [1] matchen. Ich suche etwas in der Art:

[\x1-\x8\xB\xC\xE-\x1F]

Das ist aber nicht POSIX konform [2]:
|
| 1. [...] The special characters '.', '*', '[', and '\\' ( <period>,
| <asterisk>, <left-square-bracket>, and <backslash>, respectively)
| shall lose their special meaning within a bracket expression.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Übersehe ich eine andere Option? Eine die hübscher ist als:

\x1|\x2|\x3|\x4|\x5|\x6|\x7|\x8|\xB|\xC|\xE|\xF|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F

Tim Landscheidt

unread,
Apr 25, 2018, 10:37:53 AM4/25/18
to
Michael Bäuerle <michael....@stz-e.de> wrote:

> Ein ERE soll auf obs-NO-WS-CTL [1] matchen. Ich suche etwas in der Art:

> [\x1-\x8\xB\xC\xE-\x1F]

> Das ist aber nicht POSIX konform [2]:
> |
> | 1. [...] The special characters '.', '*', '[', and '\\' ( <period>,
> | <asterisk>, <left-square-bracket>, and <backslash>, respectively)
> | shall lose their special meaning within a bracket expression.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

> Übersehe ich eine andere Option? Eine die hübscher ist als:

> \x1|\x2|\x3|\x4|\x5|\x6|\x7|\x8|\xB|\xC|\xE|\xF|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F

Wie benutzt Du die ERE? Kannst Du die „Umwandlung” viel-
leicht in der aufrufenden Programmiersprache/Shell erledi-
gen?

Tim

Michael Bäuerle

unread,
Apr 25, 2018, 11:16:30 AM4/25/18
to
Der ERE soll in eine Rule für lex eingesetzt werden (d.h.
er soll direkt im Sourcefile stehen und lex soll ihn so ver-
stehen).

Tim Landscheidt

unread,
Apr 25, 2018, 11:37:38 AM4/25/18
to
Michael Bäuerle <michael....@stz-e.de> wrote:

>> > Ein ERE soll auf obs-NO-WS-CTL [1] matchen. Ich suche etwas in der Art:

>> > [\x1-\x8\xB\xC\xE-\x1F]

>> > Das ist aber nicht POSIX konform [2]:
>> > |
>> > | 1. [...] The special characters '.', '*', '[', and '\\' ( <period>,
>> > | <asterisk>, <left-square-bracket>, and <backslash>, respectively)
>> > | shall lose their special meaning within a bracket expression.
>> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

>> > Übersehe ich eine andere Option? Eine die hübscher ist als:

>> > \x1|\x2|\x3|\x4|\x5|\x6|\x7|\x8|\xB|\xC|\xE|\xF|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F

>> Wie benutzt Du die ERE? Kannst Du die „Umwandlung” viel-
>> leicht in der aufrufenden Programmiersprache/Shell erledi-
>> gen?

> Der ERE soll in eine Rule für lex eingesetzt werden (d.h.
> er soll direkt im Sourcefile stehen und lex soll ihn so ver-
> stehen).

Bist Du sicher, dass lex das nicht leistet? „Table: Escape
Sequences in lex” in
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/lex.html
hört sich so an, als ob die Backslashes vorher verarbeitet
werden.

Tim

Michael Bäuerle

unread,
Apr 25, 2018, 3:21:00 PM4/25/18
to
Tim Landscheidt wrote:
> Michael Bäuerle <michael....@stz-e.de> wrote:
> >
> > [...]
> > Der ERE soll in eine Rule für lex eingesetzt werden (d.h.
> > er soll direkt im Sourcefile stehen und lex soll ihn so ver-
> > stehen).
>
> Bist Du sicher, dass lex das nicht leistet? „Table: Escape
> Sequences in lex” in
> http://pubs.opengroup.org/onlinepubs/9699919799/utilities/lex.html
> hört sich so an, als ob die Backslashes vorher verarbeitet
> werden.

Nein, sicher bin ich nicht. flex nimmt die Konstruktion mit \x in
Bracket Expressions auch an, ich hatte das aber für Fehlertoleranz
gehalten. Der lex von HP-UX (vermutlich ein SysV Derivat) meint dazu:
|
| [...] line 161: warning 45: Non-portable Character Class

Zeile 161 war besagter ERE, mit der Variante ohne Bracket Expression
verschwindet diese Warnung.

Ich habe es nun nochmal durchgelesen und auch die Beispiele angeschaut
(wo z.B. [\n] vorkommt). Es sieht wirklich so aus, als sollte das
erlaubt sein.

Im Zweifel nehme ich dann aber doch lieber die längliche Variante,
wenn sie portabler ist.
0 new messages