Regex Wortende optional

Gast #6252349
Hallo zusammen,

ich habe beispielsweise den folgenden Text:

"Abc_01_BeispielText1"

Ich möchte einen Regex der sowohl den Text "Abc_01" als auch den Text 
"Abc_01_BeispielText1" erkennt. Alle anderen Kombinationen soll er nicht 
erkennt.

Mein bisheriger Regex ist: @"^Abc_(?<ref>\w{2})$"

Wie kann ich "BeispielText1" optional machen? Nach BeipsielText1 kommt 
das Wortende.
Gast #6252416
guelay schrieb:
> Hallo zusammen,
>
> ich habe beispielsweise den folgenden Text:
>
> "Abc_01_BeispielText1"
>
> Ich möchte einen Regex der sowohl den Text "Abc_01" als auch den Text
> "Abc_01_BeispielText1" erkennt. Alle anderen Kombinationen soll er nicht
> erkennt.
>
> Mein bisheriger Regex ist: @"^Abc_(?<ref>\w{2})$"
>
> Wie kann ich "BeispielText1" optional machen? Nach BeipsielText1 kommt
> das Wortende.

hier kannst du deine Regexp ausprobieren

https://regex101.com/r/BC025b/1/

so aus dem bauch heraus ^(Abc_\d{2})(?:_(.*))$ aber vielleicht gibt es 
was besseres
Gast #6252438
Imonbln schrieb:
>>
>> so aus dem bauch heraus ^(Abc_\d{2})(?:_(.*))$ aber vielleicht gibt es
>> was besseres
>
> nachtrag sollte ^(Abc_\d{2})(?:_(.*))?$ heißen.
Aber er soll am Ende nur BeispielText1 erkennen. Z.B. Beispieltext2 soll 
er nicht erkennen. Alle andere Textkombinationen soll er auch nicht 
erkennen. Nur "BeispielText1".
Gast #6252441
guelay schrieb:
> Imonbln schrieb:
>>>
>>> so aus dem bauch heraus ^(Abc_\d{2})(?:_(.*))$ aber vielleicht gibt es
>>> was besseres
>>
>> nachtrag sollte ^(Abc_\d{2})(?:_(.*))?$ heißen.
> Aber er soll am Ende nur BeispielText1 erkennen. Z.B. Beispieltext2 soll
> er nicht erkennen. Alle andere Textkombinationen soll er auch nicht
> erkennen. Nur "BeispielText1".

Ich möchte also nur diese Kombinationen erkennen: Abc_01 oder 
Abc_01_BeispielText1
Gast #6252444
guelay schrieb:
> Imonbln schrieb:
>>>
>>> so aus dem bauch heraus ^(Abc_\d{2})(?:_(.*))$ aber vielleicht gibt es
>>> was besseres
>>
>> nachtrag sollte ^(Abc_\d{2})(?:_(.*))?$ heißen.
> Aber er soll am Ende nur BeispielText1 erkennen. Z.B. Beispieltext2 soll
> er nicht erkennen. Alle andere Textkombinationen soll er auch nicht
> erkennen. Nur "BeispielText1".

Ich glaube das ist das was ich suche : ^(Abc_\d{2})(?:_(BeispielText1|))
Gast #6252458
guelay schrieb:
> Aber er soll am Ende nur BeispielText1 erkennen. Z.B. Beispieltext2 soll
> er nicht erkennen. Alle andere Textkombinationen soll er auch nicht
> erkennen. Nur "BeispielText1".

okay warum dann eine Regexp? ein Stringmatch am ende sollte deutlich 
Performanter sein  Wenn Rexep dann so

https://regex101.com/r/BC025b/4

^(Abc_\d{2})(?:_(BeispielText1))?

Meine Regexp wäre dann aber ^(Abc_\d{2}) und ein Stringvergleich auf das 
ende ob das "BeispielText1" ist. Wenn das statisch ist sollte der 
Stringvergleich mit regexp für den ersten teil deutlich besser für das 
Gesamtsystem sein.

Wenn "Abc_01" auch Statisch ist, dann zwei Stringvergleiche und keine 
regexp :D
Gast #6252466
Imonbln schrieb:
ay warum dann eine Regexp? ein Stringmatch am ende sollte deutlich
> Performanter sein  Wenn Rexep dann so
>
> https://regex101.com/r/BC025b/4
>
> ^(Abc_\d{2})(?:_(BeispielText1))?
>
> Meine Regexp wäre dann aber ^(Abc_\d{2}) und ein Stringvergleich auf das
> ende ob das "BeispielText1" ist. Wenn das statisch ist sollte der
> Stringvergleich mit regexp für den ersten teil deutlich besser für das
> Gesamtsystem sein.
>
> Wenn "Abc_01" auch Statisch ist, dann zwei Stringvergleiche und keine
> regexp :D

Abc ist statisch aber 01 nicht.
Gast #6252617
greedy bis leerzeichen? [^\s]
Abc_(\w{2})(?:_[^\s]*)?

^ und $ machen in dem Fall die Sache eher komplizierter als einfacher 
mMn
ZeilenAnfang geht noch gut:

^Abc_(\w{2})(?:_[^\s]*)?

Aber sobald Du nach dem zeilenEnde mitsuchst wird's haarig falls 
zwischen capture und Zeilenende noch Text auftauchen kann.

ich bliebe also bei
^Abc_(\w{2})(?:_[^\s]*)?
das trifft
für
1
Abc_01_BeispielText1
2
Abc_02Beispieltext
3
Abc_10_Beispiel Text1
4
Abc_20_Beispiel
5
Abc_99 das hier nicht
Abc_01_BeispielText1 , Abc_02 , Abc_10_Beispiel , Abc_20_Beispiel , 
Abc_99

wie gesagt mit Zeilenende wird's mir zu haarig ;)

'sid
Gast #6253717
Exact Abc_01 oder Abc_01_BeispielText1, beliebige Position in Zeile:
1
Abc_01(_BeispielText1)?

Die erste Nummer variabel:
1
Abc_[0-9]{2}(_BeispielText1)?
Oder, falls \d erlaubt:
1
Abc_\d{2}(_BeispielText1)?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.