perl正規表現を使用して 'abc'からabcを抽出するにはどうすればよいですか?perlで一重引用符で囲まれた文字列を取り出す方法は?
私は
echo "'abc'" | perl -ne 'if(/\'(.*)\'/) {print $1}'
を試してみましたが、それは -bash示しています。お返事を事前に予期しないトークンの近くに構文エラー `(」
感謝を
perl正規表現を使用して 'abc'からabcを抽出するにはどうすればよいですか?perlで一重引用符で囲まれた文字列を取り出す方法は?
私は
echo "'abc'" | perl -ne 'if(/\'(.*)\'/) {print $1}'
を試してみましたが、それは -bash示しています。お返事を事前に予期しないトークンの近くに構文エラー `(」
感謝を
まあ、安価な方法ではありませんあなたのperlステートメントを一重引用符で囲みます:
echo "'abc'" | perl -ne "if(/'(.*)'/) {print $1}"
シェルエスケープあなたが本当にそれをあなたが、あなたの最初の単一引用符で囲まれた文字列を最後に引用符を入れて、別のものを開始することができます「正しい」方法を実行したい場合は...
を奇数ルールがあります。
echo "'abc'" | perl -ne 'if(/'\''(.*)'\''/) {print $1}'
これはperlの問題ではなく、これはシェルの問題です。シングルクォートをシングルクォートに含めることはできません。あなたが'\''
で各単一引用符を交換する必要が
あなたとあなたの単一qouteをエスケープする必要が
echo "'abc'" | perl -ne 'if(/'\''(.*)'\''/) {print $1}'
「\」」
(単一引用符の終わりには、単一引用符、ACシングル引用符の開始をエスケープ)echo "'abc'" | perl -ne 'if(/'\''(.*)'\''/){print $1}'
あなたにはシェルの問題がありますが、Perlの問題ではありません。
これはsed
のために良い使用です:
echo "'abc'" | sed "s/'//g"
choroba's answerは、正確な問題を解決します。任意の引用問題への一般的な解決のために、String::ShellQuoteを使用します。
$ alias shellquote='perl -E'\''
use String::ShellQuote qw(shell_quote);
local $/ = undef;
say shell_quote <>;
'\'''
$ shellquote
user input → if(/'(.*)'/) {print $1}␄
perl output → 'if(/'\''(.*)'\''/) {print $1}'
ターン・オフのシェル拡張をalternate quoting methodを使用することが直接のbashにドル記号を使用して、単一引用符で囲まれたPerlコードの前には:
echo "'abc'" | perl -ne $'if(/\'(.*)\'/) {print $1}'
より多くのソリューションがここに投稿されました[perl-one-liner-with-single-quote](0120-18753) – jchips12
@ jchips12 - 私はソリューションが好きです'\ 047' – mob