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

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -