Wpis z mikrobloga

Naklepałem sobie regexa który matchuje mi stringa z dwoma datami przedzielonymi znakiem /

Dla przykładu: 07-03-2020/08-03-2020

Czy można ogarnąć tego regexa tak żeby nie powtarzać go dwa razy, przed znakiem / i po znaku / ?

(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}/(?:0[1-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}

#programowanie #regexp #regex
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@NewEpisode @Tacocat @msgdn: Możesz napisać tak:

(?=[0-9-]{10}/)(?:(?:0[1-9]|1[0-9]|2[0-9]|3[0-1])-(?:0[1-9]|1[1-2])-\d{4}/?){2}(?<!/)
https://regex101.com/r/FbK6qv/1

(?=[0-9-]{10}/) - tutaj ustawiamy kursor przed ciąg znaków spełniający "[0-9-]{10}/" (co oznacza, że dane muszą zawierać /), potem masz swoje wyrażenie, a (?<!/) upewnia się, że ostatnim znakiem w dopasowanym ciagu nie jest /. W praktyce oznacza to tyle, że wymuszasz istnienie dokładnie jednego znaku
  • Odpowiedz