【问题标题】:Regex which changes first letter of filename to lowercase in sublime text 3 snippet正则表达式将文件名的第一个字母更改为 sublime text 3 片段中的小写
【发布时间】:2018-11-09 06:25:07
【问题描述】:

我想为无状态组件创建以下 react sn-p。

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:${TM_FILENAME/(.+)..+..+/\l$1/}}
  • 顺便说一句,你和(.+)..+..+匹配了什么?模式很奇怪。
  • wiktor 感谢您的回答,它确实有效:) 您编写它的方式。我没有写这个正则表达式代码,我对那里发生的事情的理解非常有限。现在唯一的问题是文件名的最后一个字母被切断了。我不知道为什么。
  • 你的意思是你匹配到了最后一个.?试试${1:${TM_FILENAME/(.+)\..*/\l$1/}}${1:${TM_FILENAME/^(.*?)(\.[^.]*)?$/\l$1/}}

标签: regex sublimetext3


【解决方案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+ 个字符
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多