1

Sublime Text 2のシンボルを定義する作業を行っていますgoto:@ command。この正規表現変換を解釈するのに助けが必要です:

<key>symbolTransformation</key>
<string>s/\/\*\*\s*(.*?)\s*\*\//** $1 **/; s/\/\*.*?\*\*\//./; s/\/\*[^\*].*?[^\*]\*\///</string>

私の意図は変換を編集することですが、最初にそれを理解する必要があります。

この特定の構文を学習するための参照はありますか? 私は正規表現に比較的慣れていないので、すべての \ と / が私を夢中にさせます! :)

それができない場合、誰かが私にその断片を説明してもらえますか?

4

1 に答える 1

2

正規表現を「アンラップ」すると、それぞれ次のようになります。

  • /\*\*\s*(.*?)\s*\*/;に置き換え** $1 **ます
  • /\*.*?\*\*/;に置き換え.ます
  • /\*[^*].*?[^*]\*/何も(空の文字列)に置き換えます。

最初の正規表現:

/\*\*   # Look for '/' followed by two occurrences of '*',
\s*     # followed by zero or more space characters,
(.*?)   # followed by zero or more of any character, lazily (with capture),
\s*     # followed by zero or more space characters,
\*/     # followed by a '*' and a '/'

キャプチャ内の数量詞は怠惰(*?)であるため、正規表現エンジンは、正規表現の次のコンポーネント()が満たされる前に、可能な最小量のテキストを照合しようとします(\s*通常の「貪欲な」数量詞とは異なり、*必要に応じて、次のコンポーネントを満たすためにテキストを返す前に、可能な最大量に一致させます)。キャプチャは$1、置換テキストのように利用できます。

2番目の正規表現:

/\*      # Look for a '/' then a '*',
.*?      # followed by zero or more of any character, lazily,
\*\*/    # followed by two '*' and a '/'

そして、これらすべてを1つのドット()に置き換えます.

3番目の正規表現:

/\*      # Look for a '/' then a '*',
[^*]     # followed by one character which is not a '*',
.*?      # followed by zero or more of any character, lazily,
[^*]     # followed by one character which is not a '*',
\*/      # followed by a '*' then a '/'.

そして、これらすべてを空の文字列に置き換えます。

于 2012-12-30T16:49:46.117 に答える