pcre - Single regex that changes camel-case to dash-separated lowercase -
i'm trying write sublimetext snippet javascript import statements. want format format like:
import myfoobar 'my-foo-bar'; the input regex myfoobar, , output needs my-foo-bar. found answer works in regex - camelcase lower case underscores:
search for
((?<=.)[a-z][a-za-z]*)|((?<=[a-za-z])\d+)replace with
-$1$2
the answer said use javascript's .tolowercase() method lowercasing, sublimetext snippets use perl, of have briefest of knowledge. quick search said lowercasing, can use \l @ beginning of replacement.
/((?<=.)[a-z][a-za-z0-9]*)|((?<=[a-za-z])\d+)/\l-\1\2/g this works on first segment's character, myfoobar becomes my-foo-bar.
i thought maybe run 2 regexes in sequence, either perl or sublime doesn't recognize that.
thoughts?
edit:
when uses perl, mean uses perl regex. far can tell, can't execute arbitrary code; can specify regex perl can execute.
here's full text of snippet:
<snippet> <content><![cdata[ import ${1:module} '${2:./path/}${1/((?<=.)[a-z][a-za-z0-9]*)|((?<=[a-za-z])\d+)/\l-\1\2/g}'; ]]></content> <!-- optional: set tabtrigger define how trigger snippet --> <tabtrigger>import</tabtrigger> <!-- optional: set scope limit snippet trigger --> <scope>source.js</scope> </snippet>
i changed regex more useful , simple.
** updated
<snippet> <content><![cdata[ import ${1:module} '${2:./path/}${1/(^[a-z][a-z]+|[a-z])([a-z])/\l\1-\2/g}'; ]]></content> <!-- optional: set tabtrigger define how trigger snippet --> <tabtrigger>import</tabtrigger> <scope>source.js</scope> </snippet>
Comments
Post a Comment