我正在Sublime Text 2
工作,为goto:@ command
定义符号。我需要帮助来解释这个正则表达式转换:
<key>symbolTransformation</key>
<string>s/\/\*\*\s*(.*?)\s*\*\//** $1 **/; s/\/\*.*?\*\*\//./; s/\/\*[^\*].*?[^\*]\*\///</string>
我的目的是编辑转换,但我需要先了解它。
是否有参考学习这种特定的语法?我对正则表达式比较新,所有的\和/让我发疯! :)
如果不这样,有人可以带我走过它吗?
答案 0 :(得分: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
形式提供。
第二个正则表达式:
/\* # Look for a '/' then a '*',
.*? # followed by zero or more of any character, lazily,
\*\*/ # followed by two '*' and a '/'
用一个点(.
)替换所有这些。
第三个正则表达式:
/\* # 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 '/'.
用空字符串替换所有这些。