eu posso fazer
{(.+)}
-->\1
e"(.+)"
-->\1
ou({.+}|".+")
-->\1
.
Eu faria {(.+)}|"(.+)"
--> \1
?
$ echo "\"x\"" | sed -E 's/"(.+)"/\1/'
x
$ echo "{x}" | sed -E 's/{(.+)}/\1/'
x
$ echo "\"x\"" | sed -E 's/^(\{.+\}|".+")$/\1/'
"x"
eu posso fazer
{(.+)}
--> \1
e"(.+)"
--> \1
ou({.+}|".+")
--> \1
.Eu faria {(.+)}|"(.+)"
--> \1
?
$ echo "\"x\"" | sed -E 's/"(.+)"/\1/'
x
$ echo "{x}" | sed -E 's/{(.+)}/\1/'
x
$ echo "\"x\"" | sed -E 's/^(\{.+\}|".+")$/\1/'
"x"
Você pode usar isso em vez disso:
Você pode ver em seu padrão
(\{.+\}|".+")
que colchetes e aspas estão dentro do grupo de captura, quando o que você deseja capturar está entre eles.Uma maneira pode ser
Ou isto:
Ou, se o Perl for uma opção, pode ser simplificado.