typescript - Κανονική έκφραση για να ταιριάζει με συμβολοσειρά μεταξύ μιας λέξης-κλειδιού και της τελευταίας εμφάνισης ενός χαρακτήρα
Είμαι πολύ σκουριασμένος με τα regex αυτή τη στιγμή, οπότε θα δείξω το πρόβλημά μου με ένα παράδειγμα:
//url/fb9ceb12-1492-4b01-b951-30e848f3adbc/fb9c2b12-1496-4r01-b92b-30e848f3adbc/λέξη-κλειδί/.....
Προσπαθώ να ταιριάξω το κείμενο σε πλάγια γράμματα, δηλαδή τη σειρά χαρακτήρων ανάμεσα στο /keyword και στο/που το προηγείται. Μέχρι τώρα κατάφερα να δημιουργήσω αυτό το regex:
(?!\/)()(?!\/keyword)(.*)(?=\/)
Το οποίο δυστυχώς αποδίδει ολόκληρη τη συμβολοσειρά //url/fb9ceb12-1492-4b01-b951-30e848f3adbc/fb9c2b12-1496-4r01-b92b-30e848f3adbc/ πριν από το /keyword/ και όχι το fb9c2b12-1496-4r01-b92b-30e848f3adbc.
Οποιαδήποτε βοήθεια θα εκτιμούνταν!
Απάντηση #1
Μπορείς να χρησιμοποιήσεις
/[^\/]+(?=\/keyword\/)/
Δείτε την επίδειξη regex. Λεπτομέρειες:
[^\/]+- ένα ή περισσότερα χαρακτήρες εκτός από/(?=\/keyword\/)- μια θετική προοπτική που απαιτεί η υποσυμβολοσειρά/keyword/να εμφανίζεται αμέσως δεξιά της τρέχουσας θέσης.
Δείτε το demo σε JavaScript:
const regex = /[^\/]+(?=\/keyword\/)/;
const text = '//url/fb9ceb12-1492-4b01-b951-30e848f3adbc/fb9c2b12-1496-4r01-b92b-30e848f3adbc/keyword/.....';
console.log(text.match(regex));