[TxMt] Re: How can I find and replace carriage returns?

Rasmus Malver rasmus at malver.dk
Sun Feb 7 18:56:12 UTC 2016


To learn more about RegEx, I can recommend Regexr.com 
<http://regexr.com/3coa1> (with your case <http://regexr.com/3coa1>). 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 
<http://php.net/manual/en/function.preg-match.php>, 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 <http://xkcd.com/208>.

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 at gmail.com
>>     <mailto:carpii.uk at gmail.com> > wrote:
>>
>>     Try using a regular expression like this..
>>
>>     http://carpii.homeip.net/skitch/Find-20160207-132857.png
>>
>>     The expression is ^.*::.*$
>
>
>
>     _______________________________________________
>     textmate mailing list
>     textmate at lists.macromates.com <mailto:textmate at lists.macromates.com>
>     http://lists.macromates.com/listinfo/textmate
>
>
>
>
> _______________________________________________
> textmate mailing list
> textmate at lists.macromates.com
> http://lists.macromates.com/listinfo/textmate

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20160207/0f319f3d/attachment.html>


More information about the textmate mailing list