0

整数とハイフンの文字列の任意の1桁を0で付加する方法を探しています。例:

「-0-2-3---12-0---10-」「-00-02-03---12-00---10-」になります

また

「-12-14-7-8-」「-12-13-07-08- 」になります

ダッシュを組み合わせて\d{1}を使用してみましたが、正しい部分がすべてキャプチャされていないようです。どんな助けでも大歓迎です。正規表現が複雑すぎてこれを実行できない場合は、たまたま何らかのトラバーサーを作成してください。

ありがとう

4

2 に答える 2

3

正規表現エンジンがルックアラウンドアサーションをサポートしている場合、これはそれを行う1つの方法です。

s/(?<!\d)(?=\d(?!\d))/0/g

正規表現エンジンが後読みアサーション(JavaScriptなど)をサポートしていない場合は、次のようにします。

s/(^|[^\d])(?=\d(!\d))/$10/g

正規表現エンジンがルックアラウンドアサーションをまったくサポートしていない場合は、次のようになります。

s/(^|[^\d])(\d)([^\d])/$10$2$3/g
于 2012-10-26T21:45:04.103 に答える
2

私は次のようなものを使用します

s/-\([0-9]\)-/-0\1-/g

これは隣接する単一の番号では機能しませんが、2回実行すると、すべての番号がキャッチされます。

Alejandra:~$cat tmp.txt 
-12-14-7-8-2-13-1-5-3-4-7-
Alejandra:~$sed "s/-\([0-9]\)-/-0\1-/g" tmp.txt | sed "s/-\([0-9]\)-/-0\1-/g"
-12-14-07-08-02-13-01-05-03-04-07-
于 2012-10-26T21:35:17.950 に答える