我正在尝试为 javascript语句编写一个 SublimeText片段。import
我希望格式格式如下:
import MyFooBar from 'my-foo-bar';
我的正则表达式的输入是MyFooBar
,输出需要是my-foo-bar
。我找到了一个几乎可以在Regex - CamelCase 中使用下划线小写的答案:
搜索
((?<=.)[A-Z][a-zA-Z]*)|((?<=[a-zA-Z])\d+)
用。。。来代替
-$1$2
答案说只是使用 javascript 的.toLowerCase()
小写方法,但 SublimeText 片段使用 perl,我对此了解最简短。快速搜索说,对于小写,我可以\L
在替换开始时使用。
/((?<=.)[A-Z][a-zA-Z0-9]*)|((?<=[a-zA-Z])\d+)/\L-\1\2/g
这适用于除第一段的角色之外的所有角色,因此MyFooBar
变为My-foo-bar
.
我想也许我可以按顺序运行两个正则表达式,但是 perl 或 Sublime 都无法识别。
想法?
编辑:
当我说它使用 perl 时,我只是说它使用 perl 正则表达式。据我所知,我实际上不能执行任意代码;我只能指定一个 perl 可以执行的正则表达式。
这是我的片段的全文:
<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>