tengo esta expresión regular:
^https?:path\?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
el parámetro de consulta:
?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
¿Cómo hago que "gl" sea opcional?
Puedes usar
^https?:path\?id=([^&]+)(?:.*?(?:&gl=([^&\s]+).*)?)?$
Vea la demostración de expresiones regulares .
Detalles :
^ - comienzo de la cadenahttp - una cadena http fijas? - s carácter opcional:path\?id= - una cadena fija :path?id=([^&]+) - Grupo 1: uno o más caracteres que no sean & char(?:.*?(?:&gl=([^&\s]+).*)?)? - una secuencia opcional de
.*? - cualquier cero o más caracteres que no sean caracteres de salto de línea tan pocos como sea posible(?:&gl=([^&\s]+).*)? - una secuencia opcional de
&gl= - una cadena fija([^&\s]+) - Grupo 2: uno o más caracteres que no sean espacios en blanco y &.* - cualquier cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible$ - final de la cadena.