frankx: kleines problem mit reges

Beitrag lesen

Hellihello

Die Negierung mit "^"? Doch, ist schon so, aber in eckigen Klammern werden Zeichen definiert, keine Strings. Für negierte Strings gibt es (?!string) und (?<!string).

~^x[^abc|def]~ hieße "Am Anfang ein kleines x, was nicht von "abc" oder "def" gefolgt ist"?

Nein, das hieße am Anfang ein kleines x, was nicht von einem a, b, c, |, d, e oder f gefolgt ist. (Ich bin mir aus dem Kopf nicht ganz sicher aber "|" hat innerhalb von [] glaube ich keine besondere Bedeutung.)

wikipedia:

Alternativen [Bearbeiten]

Man kann alternative Ausdrücke mit dem „|“-Symbol zulassen:
„ABC|abc“ bedeutet „ABC“ oder „abc“, aber z. B. nicht „Abc“.

Ein Zeichen aus einer Auswahl [Bearbeiten]

Mit eckigen Klammern lässt sich eine Zeichenauswahl definieren. Der Ausdruck in eckigen Klammern steht dann für genau ein Zeichen aus dieser Auswahl. Innerhalb dieser Zeichenklassendefinitionen haben einige Symbole andere Bedeutungen als im normalen Kontext. Teilweise ist die Bedeutung eines Symbols sogar davon abhängig, wo es sich innerhalb der Klammern befindet.

So bedeutet z. B. ein Zirkumflex „^“ am Anfang einer Zeichenklassendefinition, dass die Zeichenklasse negiert/invertiert wird. Steht ein Zirkumflex jedoch irgendwo sonst in der Definition, ist es literal zu verstehen.

[^a] ein beliebiges Zeichen außer „a“ („^“ am Anfang einer Zeichenklasse negiert selbige)

und auch:

(?=Ausdruck) positive look-ahead assertion
(?!Ausdruck) negative look-ahead assertion
(?<=Ausdruck) positive look-behind assertion
(?<!Ausdruck) negative look-behind assertion

Dank und Gruß,

frankx

--
tryin to multitain  - Globus = Planet != Welt