Gibt es eine Möglichkeit, im MUT mit Regex die Position -5 bis -1 vor einem Platzhalterzeichen (in meinem Fall ein "_") anzusprechen?
Beispiel:
Von: fsfdsafdsa 1990_fdsfgdsfd_fdsfdsafds.pdf
Nach: 1990_fdsfgdsfd_fdsfdsafds.pdf
Die Dateinamen vor dem Jahreszahlblock haben unterschiedliche Länge daher suche ich eine Möglichkeit den Jahreszahlblock über die Positionsangabe -5 bis -1 vor dem Platzhalterzeichen "_" anzusprechen.
Vielen Dank für Ideen und Anregungen!
Wolfi
MUT Regex: Zeichen vor einem Platzhalterzeichen ansprechen
Moderators: Hacker, Stefan2, white
Re: MUT Regex: Zeichen vor einem Platzhalterzeichen ansprechen
Von:
fsfdsafdsa 1990_fdsfgdsfd_fdsfdsafds.pdf
Nach:
1990_fdsfgdsfd_fdsfdsafds.pdf
Suche nach: (1:alles non-greedy)(2: Leerzeichen)(3: 4 Zahlen)(4:_Unterstrich)(5: den rest) und Ersetze mit 2-5
Kürzer
Suche nach: alles non-greedy Leerzeichen (1: 4 Zahlen_den rest) und Ersetze mit 1
Im MUT
Suche: .+?\s(\d\d\d\d_.+)
Ersetze: $1
[x]RegEx
oder auch
Suche: .+?\s(\d{4}_.+)
Ersetze: $1
[x]RegEx
Explanation:
.+?\s(\d\d\d\d_.+)
. > one of any sign
+ > one-or-more of the expression just before
? > meaning here: non-greedy, be pleased with just the fewest match
\s > match an white space (empty sign)
(....) > group the result of this expression for reuse by $1
\d > match one digit
\d\d\d > match another three digits
_ > match an literal underscore
.+ > match one-or-more of any sign as the rest
Every part-expression (pattern) will just match until the next apposite part-expression (pattern) is found.
So the first '.+?' will stop to match if the next pattern, here '\s' followed by an '\d', is found.
EDIT: 'tschuldigung für Englisch
war im falschen Modus
fsfdsafdsa 1990_fdsfgdsfd_fdsfdsafds.pdf
Nach:
1990_fdsfgdsfd_fdsfdsafds.pdf
Suche nach: (1:alles non-greedy)(2: Leerzeichen)(3: 4 Zahlen)(4:_Unterstrich)(5: den rest) und Ersetze mit 2-5
Kürzer
Suche nach: alles non-greedy Leerzeichen (1: 4 Zahlen_den rest) und Ersetze mit 1
Im MUT
Suche: .+?\s(\d\d\d\d_.+)
Ersetze: $1
[x]RegEx
oder auch
Suche: .+?\s(\d{4}_.+)
Ersetze: $1
[x]RegEx
Explanation:
.+?\s(\d\d\d\d_.+)
. > one of any sign
+ > one-or-more of the expression just before
? > meaning here: non-greedy, be pleased with just the fewest match
\s > match an white space (empty sign)
(....) > group the result of this expression for reuse by $1
\d > match one digit
\d\d\d > match another three digits
_ > match an literal underscore
.+ > match one-or-more of any sign as the rest
Every part-expression (pattern) will just match until the next apposite part-expression (pattern) is found.
So the first '.+?' will stop to match if the next pattern, here '\s' followed by an '\d', is found.
EDIT: 'tschuldigung für Englisch


Re: MUT Regex: Zeichen vor einem Platzhalterzeichen ansprechen
Danke!
Hat super funktioniert!
Ich werde den Anlassfall nutzen mich mal intensiver in die Regex Syntax einzulesen.
Grüsse
Wolfi
Hat super funktioniert!
Ich werde den Anlassfall nutzen mich mal intensiver in die Regex Syntax einzulesen.
Grüsse
Wolfi