Reguläre Ausdrücke und hoch +?

4 Antworten

Wenn es in eckigen Klammern steht, bedeutet es
"irgendein Zeichen außer +".


PWolff  21.12.2022, 13:32

Außerhalb eckiger Klammern und wenn noch ein Backslash (eine ungerade Anzahl von Backslashes) davor steht

\^+

bedeutet es, eine zusammenhängende Folge von mindestens einem "Dach"/"Caret"/"^".

BeamerBen  21.12.2022, 13:02

Die Antwort ist auch richtig, als Operator können beide Zeichen nicht hintereinander vorkommen.

[^+] wäre alles außer Plus, so etwas wie ^+ alleine geht einfach nicht.

Also entweder meint er die token einzeln oder die Frage ist falsch/unvollständig gestellt.

PWolff  21.12.2022, 13:41
@BeamerBen

Dann gäbe es noch

[\^+]

...

Ich habe es gerade mal ausprobiert: In der .NET-Auffassung von Regexes kann das Pattern tatsächlich

"^+"

(kein weiteres Zeichen) lauten. Aber wider Erwarten passt es - mit RegexOptions.Multiline - nicht auf eine ununterbrochene Folge von Zeilenanfängen, sondern auf ein Leerstring.

BeamerBen  21.12.2022, 16:56
@PWolff

Interessant ja teilweise scheint es erlaubt zu sein, in JS aber zumindest nicht.

In go funktioniert es auch, aber viel Sinn ergibt es nicht.

Und klar, mit \ wird es escaped und da geht es auf jeden Fall, dann ist es ja nur ein normaler character.

Tannibi  21.12.2022, 17:32
@BeamerBen

Ich habe davon nicht viel Ahnung, aber es gibt doch
diese greedy und non-greedy Ausführungen. Vielleicht
liegt es daran.

PWolff  21.12.2022, 21:49
@Tannibi

"greedy" und "lazy" bezieht sich darauf, ob der längstmögliche oder der kürzestmögliche Treffer gesucht wird.

Du kannst diese Seite nutzen um Regex zu testen, Erklärungen zu bekommen was bestimmte Ausdrücke machen usw.

Beispiel: ^h+allo

Bild zum Beitrag

Sehr nützlich um Regex zu lernen oder zu testen.

https://regex101.com/

Wie auch in der Erklärung der Seite steht matched ^ den Anfang des Strings (bzw. hier line da /m aka. multiline flag gesetzt ist) und + ist ein Quantifier der besagt, dass der vorherige Token ein bis unendlich oft hintereinander vorkommen darf.

Also ^h+allo würde sowohl "hallo" also auch "hhhhhallo" matchen. Aber nicht "dieser Satz enthält hallo", da hallo nicht am Anfang des Strings steht und auch nicht "allo", da das h mindestens ein mal vorkommen muss.

 - (Mathematik, Mathematikstudium)

kommt darauf an wo es vorkommt .

innerhalb des

[^abcd] 

ist es eine negation der menge , also nicht diese zeichen

ausserhalb

^abcd 

zeichnet es den anfang aus . also es muss beginnen mit

abcd

Mindestens ein Vorkommnis

Woher ich das weiß:Studium / Ausbildung – Mathematik