Avancerade Regex-koncept
När grundläggande regex inte räcker, finns det kraftfulla avancerade tekniker för komplexa filnamn-omvandlingar.
1. Gruppering och Capture Groups
Vanliga Grupper ()
# Gruppera delar av filnamnet
^(\d{4})-(\d{2})-(\d{2})_(.+)$
# Omvandling: 2024-01-15_vacation.jpg → vacation_2024-01-15.jpg
# Ersätt med: $4_$1-$2-$3
Non-capturing Grupper (?:)
# Gruppera utan att fånga
^(?:IMG_|DSC_|PIC_)(\d{4})\.jpg$
# Matchar: IMG_1234.jpg, DSC_5678.jpg, PIC_9999.jpg
# Fångar bara numret: 1234, 5678, 9999
Named Groups (?P<name>)
# Namngivna grupper för klarhet
^(?P<prefix>\w+)_(?P<number>\d+)_(?P<suffix>\w+)\.jpg$
# Ersätt med: ${suffix}_${number}_${prefix}.jpg
2. Lookahead och Lookbehind
Positive Lookahead (?=)
# Matcha text följt av specifik text
\d+(?=_copy)\.jpg
# Matchar: 123_copy.jpg, 456_copy.jpg
# Men inte: 789.jpg
Negative Lookahead (?!)
# Matcha text INTE följd av specifik text
\d+(?!_copy)\.jpg
# Matchar: 123.jpg, 456.jpg
# Men inte: 789_copy.jpg
Lookbehind (?<=)
# Matcha text föregången av specifik text
(?<=IMG_)\d+\.jpg
# Matchar numret i: IMG_1234.jpg
# Resultat: 1234.jpg
3. Backreferences
Nummerade Backreferences
# Fånga och återanvänd
^(.+)_\1\.jpg$
# Matchar: vacation_vacation.jpg
# Men inte: vacation_trip.jpg
# Omvandling: duplicate_duplicate.jpg → duplicate.jpg
# Ersätt med: $1.jpg
Named Backreferences
# Återanvänd namngivna grupper
^(?P<name>.+)_(?P=name)\.jpg$
# Matchar: vacation_vacation.jpg
# Ersätt med: ${name}.jpg
4. Alternation och Conditional
Alternation (|)
# Välj mellan alternativ
^(IMG_|DSC_|PIC_)(\d+)\.jpg$
# Matchar: IMG_1234.jpg, DSC_5678.jpg, PIC_9999.jpg
# Ersätt med: photo_$2.jpg
Conditional (?()
# Villkorlig matching
^(IMG_|DSC_)?(\d+)(?(1)_processed)\.jpg$
# Matchar: IMG_1234_processed.jpg, 5678.jpg
# Men inte: IMG_1234.jpg (saknar _processed)
5. Avancerade Quantifiers
Possessive Quantifiers
# "Girig" matching som inte backar
\d++\.jpg
# Matchar så många siffror som möjligt
# Stannar inte för backtracking
Atomic Grupper (?>)
# Atomisk gruppering
^(?>\d+)_(.+)\.jpg$
# Gruppen \d+ kan inte delas upp
# Förhindrar backtracking
6. Praktiska Exempel
Foto-organisering med EXIF-data
# Komplext foto-mönster
^(?P<date>\d{8})_(?P<time>\d{6})_(?P<camera>\w+)_(?P<event>\w+)\.jpg$
# Omvandling till: ${event}_${date}_${time}_${camera}.jpg
# Resultat: vacation_20240115_143022_Canon.jpg
Dokument-organisering
# Dokument med versioner
^(?P<doc>.+)_v(?P<version>\d+)(?:_(?P<status>draft|final|review))?\.pdf$
# Omvandling: report_v2_final.pdf → final_report_v2.pdf
# Ersätt med: ${status}_${doc}_v${version}.pdf
Media-filer med metadata
# Komplext media-mönster
^(?P<artist>[^-]+)-(?P<album>[^-]+)-(?P<track>\d+)-(?P<title>[^.]+)\.mp3$
# Omvandling till: ${track}_${title}_${artist}_${album}.mp3
# Resultat: 01_Song_Name_Artist_Name_Album_Name.mp3
7. Prestanda-optimering
Undvik Katastrofal Backtracking
# DÅLIGT - kan orsaka hängning
(.+)*\.jpg
# BÄTTRE - använd possessive eller atomic
(?>.+)*\.jpg
(.++)*\.jpg
Använd Specifika Mönster
# DÅLIGT - för brett
.*\.jpg
# BÄTTRE - mer specifikt
\w+\.jpg
[^.]*\.jpg
8. Säkerhet och Validering
Validera Input
# Säker regex för filnamn
^[a-zA-Z0-9._-]+\.jpg$
# Undvik farliga tecken
^[^<>:"/\\|?*]+\.jpg$
Begränsa Längd
# Max 50 tecken före extension
^.{1,50}\.jpg$
9. Verktyg för Regex-testning
- Regex101: Online regex-tester med förklaringar
- Regexr: Interaktiv regex-redigerare
- RegEx Pal: Snabb regex-validering
10. Bästa Praktiker
- Testa alltid: Verifiera mönster på testdata
- Dokumentera: Förklara komplexa mönster
- Backup: Skapa säkerhetskopior innan massomdöpning
- Prestanda: Undvik backtracking-problem
- Säkerhet: Validera input och begränsa mönster
Redo att testa avancerade regex-mönster?
Prova vårt gratis online verktyg med regex-stöd för säker massomdöpning!
Testa BatchRename Pro
Redo att testa avancerade regex-mönster?
Prova vårt gratis online verktyg med regex-stöd för säker massomdöpning!
Testa BatchRename Pro