整数とハイフンの文字列の任意の1桁を0で付加する方法を探しています。例:
「-0-2-3---12-0---10-」は「-00-02-03---12-00---10-」になります
また
「-12-14-7-8-」は「-12-13-07-08- 」になります
ダッシュを組み合わせて\d{1}を使用してみましたが、正しい部分がすべてキャプチャされていないようです。どんな助けでも大歓迎です。正規表現が複雑すぎてこれを実行できない場合は、たまたま何らかのトラバーサーを作成してください。
ありがとう
整数とハイフンの文字列の任意の1桁を0で付加する方法を探しています。例:
「-0-2-3---12-0---10-」は「-00-02-03---12-00---10-」になります
また
「-12-14-7-8-」は「-12-13-07-08- 」になります
ダッシュを組み合わせて\d{1}を使用してみましたが、正しい部分がすべてキャプチャされていないようです。どんな助けでも大歓迎です。正規表現が複雑すぎてこれを実行できない場合は、たまたま何らかのトラバーサーを作成してください。
ありがとう
正規表現エンジンがルックアラウンドアサーションをサポートしている場合、これはそれを行う1つの方法です。
s/(?<!\d)(?=\d(?!\d))/0/g
正規表現エンジンが後読みアサーション(JavaScriptなど)をサポートしていない場合は、次のようにします。
s/(^|[^\d])(?=\d(!\d))/$10/g
正規表現エンジンがルックアラウンドアサーションをまったくサポートしていない場合は、次のようになります。
s/(^|[^\d])(\d)([^\d])/$10$2$3/g
私は次のようなものを使用します
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-