Textmate snippet to format string (regex?)
I'm trying to create a textmate snippet that will transform this:
HELLO WORLD<br />
SAY ANYTHING
To t开发者_运维技巧his:
hello world say anything
Any help?
With a little help from Allan Odgaard himself:
snippet
begin
in: ${1:Hello}
out: ${1/\A\s+|\s+\Z|\s*\n\s*|(\<br\s*\/?\>)|(.)/(?1: :\L$2)/ig}
end
test
begin
in: THIS IS<br />
WORKING<BR>
VERY NICELY<br/>
EVEN WITH MULTIPLE<BR />
LINE BREAKS!
out: this is working very nicely even with multiple line breaks!
end
Regex Match Explanation
\A beginning of buffer
\s+ followed by one or more whitespace
| OR
\s+ one or more whitespace
\Z followed by end of buffer
| OR
\s* zero or more whitespace
\n followed by newline
\s* followed by zero or more whitespace
| OR
( Capture to 1
<br Literal `<br'
\s* followed by zero or more whitespace
\/? followed by one or zero literal `/'
> followed by literal `>'
) End capture
| OR
( Capture to 2
. Any character
) End capture
Regex Replace Explanation
note: conditional replacements are unique to TextMate
(?1: IF Capture 1 is found
Insert space (' ')
: ELSE
\L$2 Insert lowercase(Capture 2)
) ENDIF
Regex Modifiers Explaination
i case insensitive
g global match/replace
精彩评论