2012-02-23 7 views
2

私の質問がちょっと厄介なように聞こえたら、私を許してください。私はスカラーに割り当てられた値に影響を与えずにperlソースファイルの行番号を置き換える正規表現を探しています。スカラーに割り当てられた値ではなく、文字列を置き換える正規表現

私は以下のことが私の質問を少しはっきりさせると思います。私はこのようになりますperlのソースを持って言う:

1. $foo = 2.4; 
2. print $foo; 

私はスカラーに割り当てられた値に影響を与えることなく、それらの行番号(1. 2. etc..)を交換するための正規表現を好むので、この場合$fooになります。

おかげ

+0

基本的な質問のように聞こえましたか? –

+0

さて、行番号とスカラー割り当ての違いは何ですか?あなたが「行番号は常に行の始めにあり、スカラーの代入はそうではない」と言うと、正規表現は非常に簡単になります。 's/^ \ d //;'は、ライン。 – Konerak

答えて

4

あなたが開始を表すために、キャレット記号^を使用することができます行の$は、行の終わりを表します。これらはアンカーとして知られています。

ので、行の先頭に数\dを見つけるために、(のみ)あなたは

のように、何もないとそれらを「交換する」ことができ、これらの番号を削除したい場合は、

/^\d+/ 

を検索することができます

s/^\d+//g 

数字の後ろにドットを含めたい場合は、 を試してみてください。

/^\d+./ 

しかし、あなたはそれが文字通り

/^\d+\./ 

キャレット記号^も(文字セットで二重の義務を果たす解釈持つようにドットをエスケープする必要がありますので、正規表現でドットが「任意の文字」を表しそれはそれらを否定する)、私は正規表現を学ぶときそれが混乱の共通の源であるので、これだけを言及する。

​​
5

アンカーラインのスタートにあなたの正規表現:数字削除する

:Perlの正規表現の中で

perl -p -i.bak -e's{^\d+\. }{}' myperl 
関連する問題