Come funziona? (: \; Jsessionid = [^ \ #?] *)? in un regolare lavoro di espressione?
-
09-10-2019 - |
Domanda
Supponiamo che io sono questo testo da abbinare:
http://localhost:8080/start.jsp;jsessionid=9E4CDB636248C9610F57704E5E07F782?whatever=true&somethingelse=true
Con questa espressione regolare:
^(.*?start\.jsp)(?:\;jsessionid=[^\?#]*)?(\?[^#]*)?(#.*)?$
I gruppi risultanti sono:
-
http://localhost:8080/start.jsp
-
?whatever=true&somethingelse=true
A. Perché non è il numero 2 del gruppo in questo modo:? ;jsessionid=9E4CDB636248C9610F57704E5E07F782
Che cosa significa questo parte ?:\
all'inizio del secondo gruppo fare?
B. E inoltre, come posso creare un'espressione per estrarre gli stessi gruppi come per l'esempio precedente, se le mie opzioni sono begin.jsp
e start.jsp
(non solo start.jsp
) prima della parte jsessionid
?
Soluzione
-
(?: )
è la sintassi per un gruppo non-cattura. Come spiega il nome che non cattura la sua partita. - mettere alternano gruppo corrispondente non cattura:
(.*?(?:start|begin)\.jsp)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow