dx_*_*_dt 5 regex pcre sublimetext-snippet
我正在尝试为javascript 语句编写SublimeText 代码段import.我希望格式格式如下:
import MyFooBar from 'my-foo-bar';
Run Code Online (Sandbox Code Playgroud)
我的正则表达式的输入是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
Run Code Online (Sandbox Code Playgroud)
这适用于除第一段的角色以外的所有角色,因此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>
Run Code Online (Sandbox Code Playgroud)
我将 RegEx 更改为更有用且可能更简单的东西。
**更新
<snippet>
<content><![CDATA[
import ${1:module} from '${2:./path/}${1/(^[A-Z][a-z]+|[a-z])([A-Z])/\L\1-\2/g}';
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>import</tabTrigger>
<scope>source.js</scope>
</snippet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |