首页 > 解决方案 > 正则表达式提取双引号之间的任何字符串(带双引号)

问题描述

我不知道如何提取双引号之间的任何字符串,该字符串可能包含双引号,例如:

""aa"     => "aa
"aa"      => aa
""        =>
"a\nb"    => a\nb
"\u0082"  => \u0082
"ᅚ竁퇈"   => ᅚ竁퇈

我试过\"([^\"]*)\" 但在 ""aa" => "aa 上失败了

标签: regex

解决方案


您的示例 ""a" 无法处理,因为您不知道是取 null 还是 "aa.

无论如何,如果您的样本在一行上,您可以使用正则表达式开始和结束:

sed 's/^"//;s/"$//'

测试:

$ cat file
""aa"
"aa"
""
"a\nb"
"\u0082"
"ᅚ竁퇈"

$ cat file | sed 's/^"//;s/"$//'
"aa
aa

a\nb
\u0082
ᅚ竁퇈

推荐阅读