JavaScript import
のSublimeText snippetを記述しようとしています。ダッシュで区切られた小文字にキャメルケースを変更する単一の正規表現
import MyFooBar from 'my-foo-bar';
私の正規表現の入力はMyFooBar
であり、出力はmy-foo-bar
する必要があります:私は、フォーマット形式は次のようになりたいです。私はほとんどRegex - CamelCase to lower case with underscoresで働くの答えを見つけた:
((?<=.)[A-Z][a-zA-Z]*)|((?<=[a-zA-Z])\d+)
ため
検索を答えはちょうどのためのJavaScriptの
.toLowerCase()
メソッドを使用するように言わ
-$1$2
と交換lowercaseですが、SublimeTextスニペットはpを使用しますエル、私は知識の中で最も簡単です。クイック検索では、小文字の場合は交換の冒頭で\L
を使用できます。
/((?<=.)[A-Z][a-zA-Z0-9]*)|((?<=[a-zA-Z])\d+)/\L-\1\2/g
これは、すべてが、最初のセグメントの文字で動作しますので、MyFooBar
はMy-foo-bar
になります。
おそらく私は2つの正規表現を連続して実行できると思っていましたが、perlまたはSublimeのいずれかがそれを認識しません。
思考?
編集:
私はそれがPerlを使用して言うとき、私はちょうどそれがPerlの正規表現を使用しています意味。私が知る限り、私は実際には任意のコードを実行することはできません。 perlが実行できる正規表現しか指定できません。
ここに私のスニペットの全文です:(substr()
)
<snippet>
<content><![CDATA[
import ${1:module} from '${2:./path/}${1/((?<=.)[A-Z][a-zA-Z0-9]*)|((?<=[a-zA-Z])\d+)/\L-\1\2/g}';
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>import</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>source.js</scope>
</snippet>
を更新しましたか?これは、適切な検索と置換機能によってより簡単に処理されます。これはperlが持っています。 – cat
@cat私はスニペットの作成方法を学んでいますが、http://sublimetext.info/docs/en/extensibility/ snippets.html#置換は、置換を行う1つの方法しか示していません。 – dfoverdx
@anubhava最後の文はここで問題になります。 2つの正規表現を実行して、最初の文字の「エラー」を修正します。これは明らかに機能しません。 – Christoph