2016-04-28 7 views
3

私は崇高なテキストでこれをキャッチしようとしています。文字列間のすべての(+)記号に一致する

:このようなので、私はそれらの間にスペースを追加することができますカルク内部のシンボル...

-

-webkit-calc(50%+4px/2+32px-32px*23%) 

すべての+とをキャッチしたい:

はこれを持っています

-webkit-calc(50% + 4px/2 + 32px - 32px*23%) 

私はこれをすでに持っていますが、calc(***)内のすべてのコンテンツをキャッシュしていますが、+と - すべてをほしいと思っています -

(?<=calc\()(.+)(?=\)) 

はそれだけで-間calc(と行の最後の)が何であるかをつかむため事前

答えて

4

おかげであなたの(?<=calc\()(.+)(?=\))動作しません、あなたはこの1みんなで私を助けることを願って。あなただけのこれらの区切り文字の内側+または-を一致させる必要がある、と\Gオペレータの出番それはです。

ネストされた括弧がない場合、あなたは

(?:calc\(|(?!^)\G)[^)+-]*\K[-+] 

$0と交換を使用することができます。安全性を高めるため、calc\bcalcの前に単語境界を追加してください。

regex demo

enter image description here V

enter image description here

パターンが一致する参照:

  • (?:calc\(|(?!^)\G) - 一致calc(または前の終わり(calc\(又は\bcalc\(と一致)成功
  • [^)+-]*(?!^)\Gと)一致 - )以外0+文字、+-
  • \K - これまで
  • [-+]にマッチした文字を省略 - あなたの場合は-または+

のいずれかと一致スペースが足りないところだけを追加したい場合は、演算子の周囲のスペースをすべて一致させ、単一スペースで置き換えることができます:

(?:calc\(|(?!^)\G)[^)+-]*?\K\s*([-+])\s* 
          ^^^ ^^^^ 

$1と置き換えてください。これにより-webkit-calc(50%+ 4px/2 +32px - 32px*23%)-webkit-calc(50% + 4px/2 + 32px - 32px*23%)になります。

+0

正確に言うと、 '\ K'はSublimeText S&Rで使用されるBoostライブラリでサポートされています。 –

+1

あなたは最高です!あなたはちょうど私に直接完璧な答えを与え、より多くのスペースの解決策をとった後に私に起こることをあなたが知っていた何かへの解決策を私に与えました。 **本当にありがとうございます!** – aPinix

+0

あなたは大歓迎です、明るい色調に感謝します。 –

関連する問題