Come funziona? (: \; Jsessionid = [^ \ #?] *)? in un regolare lavoro di espressione?

StackOverflow https://stackoverflow.com/questions/4657460

  •  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:

  1. http://localhost:8080/start.jsp
  2. ?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?

È stato utile?

Soluzione

  1. (?: ) è la sintassi per un gruppo non-cattura. Come spiega il nome che non cattura la sua partita.
  2. mettere alternano gruppo corrispondente non cattura: (.*?(?:start|begin)\.jsp)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top