Cadena dada como keydown.capture.once.prevent.shift.control[arrowdown,arrowup]:silent Quiero hacer coincidir shift.control[arrowdown,arrowup]:silent
Y si el mismo keydown.capture.once.prevent.shift[arrowdown,arrowup]:silent entonces debería coincidir con shift[arrowdown,arrowup]:silent
Aquí las palabras clave cambian | control son opcionales, por ejemplo: keydown.capture.once.prevent.[arrowdown,arrowup]:silent , cadena coincidente [arrowdown,arrowup]:silen arriba]: silencio
Escribí la siguiente expresión regular, solo puede capturar cero o una palabra clave, pero el resultado esperado es cero o todas las palabras clave que coinciden en un grupo separado
(shift|control)?\[(.*?)\]:silent , ¿cómo podemos capturar todas las palabras clave si existen?
Notas adicionales: el orden de las palabras clave no importa, por ejemplo, puede ser control.shift[]:silent
Puede usar cualquiera de estas soluciones de expresiones regulares:
(?:(?:shift|control)\.?)*\[([^\]]*)\]:silent Esto coincide con shift o control` opcionalmente seguido de un dit y repite este grupo sin captura 0 o más veces.
(?:shift(?:\.control)?|control(?:\.shift)?)?\[([^\]]*)\]:silent Este coincide con shift.control O control.shift en un grupo opcional sin captura con las partes después del punto opcional en cada alternancia.
Podrías intentar esto:
(?:(shift|control|shift\.control|control\.shift))?(\[.*\]):silentPrueba y salida: https://regex101.com/r/rMSd2l/1