С небольшой помощью самого Аллана Одгаарда:
фрагмент
begin
in: ${1:Hello}
out: ${1/\A\s+|\s+\Z|\s*\n\s*|(\<br\s*\/?\>)|(.)/(?1: :\L$2)/ig}
end
тест
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 Объяснение
\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 Заменить Объяснение
примечание : условные замены являются уникальными для TextMate
(?1: IF Capture 1 is found
Insert space (' ')
: ELSE
\L$2 Insert lowercase(Capture 2)
) ENDIF
Описание модификаторов Regex
i case insensitive
g global match/replace