2011-08-09 18 views
-2

(\(に置き換えようとしていますが、perlの正規表現を使用しています。これは問題があることが判明しています。バックスラッシュをエスケープする方法

$var =~ s/\(/\\\(/g 

は動作していないようです。式は、バックスラッシュをもう一度エスケープされていないと、結果は、この作業をするために\\(

任意のトリックですか?

ありがとうございました。

あなたたちは正しいです。私のコードは動作します。それはそれを解釈していなかったので、コマンドラインで違った表示をしていました。無駄な時間に申し訳ありません。あなたはこのことについて\

perl -e '$var = "((test))"; $var =~ s/\(/\\\\\(/g; print $var' 
\\(\\(test)) 
+1

あなたは '\('や '\\('?あなたの交換の結果は '(' \あるべきで、それを交換したいんので、待ってください。 – BoltClock

+0

私達にあなたのコード –

+0

の他の部分を示し、(置き換え\\(好奇心のうち – Falcata

答えて

2

どのようにエスケープする必要があり

+0

は、いや、それは\\\\( – Falcata

+0

は私が10 \ 'sに\ 1からそれを試してみたなります。意図した結果を得ることはありませんでした。:(イライラ – Falcata

+0

そして、意図した結果が、後に* 2 *なるようにバックスラッシュがあるためでしょうか?あなたは10 \ 'sの\ 1からしようとした場合、私たちはこれらの試みの結果を示す。 –

2

:ここ

$var =~ s/\(/\\\\\(/g 
+0

でそれを逃れるように見えるのいずれか:( – Falcata

+5

@Falcata停止」と言っていないこと私はambigiousされていた場合には動作」と、それは仕事をしたときに何が起こるかについてのご質問には明確に作り始める。 – hobbs

+0

だけでなく、私は私のシェルから結果をコピーし、..だから –

1

は、あなたが探しているOCDEでは、別の 区切り文字で、「/」置き換え、それが簡単になります。

$abc =~ s#\(#\\\(#g; 
関連する問題