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

On 07/02/16 19.14, Carpii UK wrote:

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 made
I'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