正则表达式,将崇高文字3片段中文件名的首字母更改为小写

时间:2018-11-09 06:25:08

标签: regex sublimetext3

我想为无状态组件创建以下反应片段。

import React from 'react';
const fileName= (props) => {


}

export default fileName;

到目前为止,我已经关注

<snippet>
 <content><![CDATA[
import React from 'react';
const ${1:${TM_FILENAME/(.+)..+..+/$1/}} = (props) => {


}

export default ${1:${TM_FILENAME/(.+)..+..+/$1/}};
]]></content>
 <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
 <!-- <tabTrigger>hello</tabTrigger> -->
 <tabTrigger>less</tabTrigger>
 <!-- Optional: Set a scope to limit where the snippet will trigger -->
 <!-- <scope>source.python</scope> -->
</snippet>

输出

import React from 'react';
const FileName= (props) => {


}

export default FileName;

如何使文件名的首字母小写?

1 个答案:

答案 0 :(得分:1)

根据SublimeText snippet documentation,此处的正则表达式风格为Boost,它支持replacement patterns中的大小写更改运算符。

您可以使用以下修复程序:

${1:${TM_FILENAME/(.+)..+..+/\l$1/}}
                             ^^

\l运算符将位于运算符右边的第一个字符变为小写。

其他选项:

\l  Causes the next character to be outputted, to be output in lower case.
\u  Causes the next character to be outputted, to be output in upper case.
\L  Causes all subsequent characters to be output in lower case, until a \E is found.
\U  Causes all subsequent characters to be output in upper case, until a \E is found.
\E  Terminates a \L or \U sequence.

请注意,您的模式看起来不理想,因为它会捕获任何1个或更多字符((.+)),直到最后四个字符(..+..+匹配由于第一个贪婪而在一行中最后4个字符图案)。它可能无法满足您的需求。

如果您打算捕获直到最后一个点为止的所有文本,请使用

${1:${TM_FILENAME/^(.*?)(\.[^.]*)?$/\l$1/}}

其中

  • ^-字符串的开头
  • (.*?)-第1组($1):除换行符以外的任何0+个字符,并且尽可能少
  • (\.[^.]*)?-第2组(可选):.,然后是.以外的任何0+字符
  • $-字符串的结尾。