2017-11-03 20 views
2

メモ帳++でのグループ・オブ・グループ正規表現を交換する方法:私はこのようないくつかのテキストを持っている

1|Some things|US|192||||||1|| 
2|Some other things|US|128|3|||5|1|1|3| 
3|Whatever else|US|128||15|||||| 

そして、私のようなもので++メモ帳でそれを交換したいと思います:

1|Some things|US|192|+++++1++ 
2|Some other things|US|128|3+++5+1+1+3+ 
3|Whatever else|US|128|+15++++++ 

しかし、私はそれを行うためのいくつかの適切な方法を見つけることができませんでした。私は文字列:US\|(\d+)\|((\d*)\|)+と一致するRegExpを構築することができましたが、このグループのグループアプローチに合うように置換文字列を作成する方法を見つけることができませんでした。

私のための難しい部分は、「米国」の後の最初の数字を除いていました。私が見ることができる唯一の方法は、+の代わりに(?<![a-zA-Z])\|(?![a-zA-Z])を置き換えて、US\|(\d+)\+US|\1|に戻して置き換えていました。

メモ帳++の組み込みツールやTextFXの置き換えツールでこのような置き換えを行うことはできますか?置換文字列として+

(?:\G(?!^)|\|US\|\d+\|)\d*\K\| 

答えて

4

あなたはこのパターンを使用することができます。

  • 最初の一致が交互の第二のブランチを使用:\|US\|\d+\|と第一パイプと一致
  • 他のマッチは、\Gアンカーを有する第1の分岐を使用し、それぞれについて

    シナリオが同じ行連続性を保証する。

  • 最後のパイプに達すると、連続性が崩れ、最初のブランチはそれ以上成功できなくなります。

\Kフィーチャーは、一致結果から前に一致したすべての文字を除去し、パイプのみが置換されます。

+0

これは私の心をひねっていますが、動作します!説明をありがとう!私は '\ G'と' \ K'を知らなかった。 –

関連する問題