To learn more about RegEx, I can recommend Regexr.com (with your case). It is based on the JavaScript implementation, so there are limits, but it's a good start.
As Carpii said, you define “capture groups” with parentheses. TextMate Find & Replace behaves like PHP's preg_match, so the “entire match” is in$0
. In
this case you need the entire line unbroken, so that's why $0
works.
If instead you want to change:
PRODUCTS
2::prnt_material_width
to
getValue(
PRODUCTS 2 ; prnt_material_width ; 1) ;
You would need to match the two groups separately:
^(.+)::(.+)$
Replace with:
getValue( $1 ;
$2 ; 1) ;
I use +
instead of *
,
because +
requires a minimum of 1 character. It's a habit.
And of course there are many practical applications to knowing regular expressions.
Rasmus
Can you please help me understand what is happening between these two expressions?
^ beginning of the line
.*::.*
$ end of the line
^ match the beginning of the line
.* followed by 0 or more characters (apart from newline)
:: followed by 2 literal colon characters
.* followed by 0 or more characters (apart from newline)
$ followed by the end of the line (a \n character)
also…
can you please tell me what the zero after the $ doing in this string?
getValue( $0; 1) ;
The $0 is a way of referencing one of the captures the regular expression madeI'm not entirely sure this capturing syntax is right, normally I use brackets to capture, yet it seems to work in textmate.
We need to do this otherwise we don't know what to output after getValue(
On Feb 7, 2016, at 7:29 AM, Carpii UK <carpii.uk@gmail.com > wrote:
Try using a regular expression like this..
The expression is ^.*::.*$
_______________________________________________
textmate mailing list
textmate@lists.macromates.com
http://lists.macromates.com/listinfo/textmate
_______________________________________________ textmate mailing list textmate@lists.macromates.com http://lists.macromates.com/listinfo/textmate