我可以
{(.+)}
-->\1
和"(.+)"
-->\1
,或({.+}|".+")
-->\1
。
我会做{(.+)}|"(.+)"
-->\1
吗?
$ echo "\"x\"" | sed -E 's/"(.+)"/\1/'
x
$ echo "{x}" | sed -E 's/{(.+)}/\1/'
x
$ echo "\"x\"" | sed -E 's/^(\{.+\}|".+")$/\1/'
"x"
我可以
{(.+)}
-->\1
和"(.+)"
--> \1
,或({.+}|".+")
--> \1
。我会做{(.+)}|"(.+)"
-->\1
吗?
$ echo "\"x\"" | sed -E 's/"(.+)"/\1/'
x
$ echo "{x}" | sed -E 's/{(.+)}/\1/'
x
$ echo "\"x\"" | sed -E 's/^(\{.+\}|".+")$/\1/'
"x"
您可以改用它:
您可以在模式
(\{.+\}|".+")
中看到括号和引号位于捕获组内,而您要捕获的内容位于它们之间。一种方法可以是
或这个:
或者,如果 Perl 是一个选项,那么它可以变得更简单。