Bueno.. Usualmente cuando uno hace un pedido a una pagina puede ir como GET o POST.
Ejemplo... al abrir la pagina de inicio de este foro. Mi navegador envia una solicitud GET al servidor:
GET /foros/index.php?userid=30 HTTP/1.1
Host: www.todopic.com.ar
Connection: keep-alive
Cache-Control: max-age=0
***** Aca hay mas *********
Otro caso seria:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
userid=30&name2=value2
El servidor entonces tiene que actuar. Si fue GET los parametros van a ir en la URL, si es POST los parametros van a ir por la cabecera que envíe, esto se puede observar en los ejemplos anteriores.
De esa forma el ESP que estaria funcionando como servidor debe saber exactamente que es lo que le pide el cliente.
Ahora esa expresion regular esta buscando algo que concuerde con lo expresado:
([A-Z]+) (.+)?(.+) HTTPTenemos:
([A-Z]+)
Que separaria el primer grupo ( los grupos estan separados en parentesis), que son todas letras mayusculas de la A a la Z y que pueden ocurrir una o varias veces ( por eso el + )
Luego le sigue un espacio, ( caracter 32 de la tabla ASCII )
Luego tenemos el otro grupo
(.+)
Esto nos dice que puede ser cualquier letra ( el punto dice eso) y que se puede repetir muchas veces
Seguimos con un "?", que creo que aca necesita en realidad un caracter de escapees decir deberia ser \?
Eso seguido de otro grupo (.+) el cual puede ser cualquier cosa
Y terminado con " HTTP", es decir el espacio y las letras HTTP.
---------
Ahora miremos el ejemplo del GET y que puse en negrita antes
GET /foros/index.php?userid=30 HTTP/1.1
Si yo lo hago pasar por una expresion regular del estilo : ([A-Z]+) (.+)\?(.+) HTTP
Primero que coincide, por lo cual ya me indica que existe la cabecera, ademas los grupos me quedarian:
Grupo1 : "GET"
Grupo2 : "/foros/index.php"
Grupo3: "userid=30"Entonces obtuve: El metodo, que es el GET , la pagina que se intenta acceder y los parametros a usar.
En el otro caso que es el de :
([A-Z]+) (.+) HTTPSeria ideal para un POST, ya que como dijimos estos no poseen los parametros EN la direccion URL, y es por eso que esta alli, ya que en la cabecera post no hay un "?" en la URL, la expresion regular que usabamos antes y que funcionaba para el GET, ahora nos dice claramente que no encuentra ninguna sentencia de esa forma. Por eso mismo estan ambas.
--------
Espero que haya quedado claro. Y se pueda entender.