Si desea obtener sólo el texto coincidente de una expresión regular, me gustaría utilizar
grep -o 'regex' file
En el espíritu de su código me gustaría modificarlo para que sea
while read line; do
[[ $line =~ regex ]] || continue
# do somethinw with $line or $BASH_REMATCH, perhaps put it in an array.
done < file
Si desea hacer coincidir varias expresiones regulares en la misma línea, aquí hay una forma.
while read line; do
# do somethinw with $line
done < <(grep -o 'regex' file)
Supongo que su expresión regular se supone que es un ejemplo simplificado de lo que realmente está haciendo. Los ? no es útil y sus citas coinciden con una cadena literal.
¿Quiere agregar el? al final del patrón? – Richard