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));