2017-01-03 3 views
-1

メモ帳++のRegExを使用して、行末の数字のみをセミコロン;に置き換える必要があります。行末の数字の選択

Before: 
ddd 66 ffff 5 
d 44 dds 55 

After: 
ddd 66 ffff; 
d 44 dds; 

私が表現

($)(\d+) 

と行の末尾に数字を見つけようとしているが、メモ帳+ +は、この式を利用して何かを見つけることができません。これを達成する方法は?

+0

おそらく '* \ d + *(\ n | $)'ですか?私はメモ帳を持っていない+ +。 – chris85

答えて

3

検索:

\s\d+$ 

置き換え:

; 

\d+は1桁以上の数字と一致します。 $はラインの終わりと一致します - これはキャプチャされません(したがって、ラインの終わりは検索/置換操作では置き換えられません)。そして、\d+$は、行の終わりの直後の1つ以上の数字と一致します。

数字の前のスペースも置き換えるように見えるので、\s(空白文字は1つ)が含まれています。

必要に応じて、「すべて置き換え」を行う必要があります。置き換え

^(.*) \d+$ 

\1; 

検索正規表現を

を探す:(各正規表現マッチが一つだけのためであるため)

+0

正規表現がより複雑になり、単一の開始/終了アンカーでバインドできない場合、この手法はスケールされません。 –

+0

@TimBiegeleisen正規表現が "より複雑"で、 "...アンカーに縛られる"ことができなかった場合、アンカーなしで別の正規表現が必要になります(これはまったく別の質問です)。しかし、OPは、「ラインの終わりで」定義されたターゲットマッチについて特に質問した*。したがって、なぜあなたはアンカーが必要です。 – Travis

+0

あなたの答えは、スペースが1つしかない行に数字が続く行を置き換えますが、そのようなケースが置換の候補になるかどうかはわかりません。 –

1

は、検索/置換、これを試してみてください上の数字は、最後のスペースの後に少なくとも1桁の数字が続くものまでを意味します。与えられた行の終了パターンが空白文字の後に1つ以上の数字がない場合、正規表現は一致しません。置き換えはキャプチャグループで、カッコ内は最終スペースと番号を除くすべてです。

+2

これはうまくいくように見えますが、残酷なようです...なぜ最後の数桁に先行する行のすべてにマッチするのですか? '\ d + $'と正しくマッチさせるために '^(。*)'は必要ありません。 – Travis