Re: regular expression problem
Eddy De Greef <[email protected]> Thu, 22 Apr 2010 13:43:45 +0200
| Newsgroups | gmane.editors.nedit.user |
|---|---|
| Message-ID | <[email protected]> |
The problem is that the '.+' matches all characters greedily, including
the comma. To make it non-greedy, use '.+?':
replace_in_selection("^(.+?),*$", "input\t\\1,", "regex")
Alternatively, you can use:
replace_in_selection("^([^,]+),*$", "input\t\\1,", "regex")
This will prevent any commas from being consumed by the part between
brackets.
Eddy
On 04/22/2010 01:27 PM, Eric Bouyoux wrote:
> Hi,
>
> Thank you for your answer. What I do is the following, which seems to be
> more or less the same as your last example :
> replace_in_selection("^(.+),*$", "input\t\\1,", "regex")
>
> The idea is : I take what is in (), I add "input\t" before and "," after.
> But it seems to be a greedy expression which goes to the end of line and
> does not stop to the first ",".
>
> Regards.
>
> Eric.
>
> Le 22/04/2010 10:24, Eddy De Greef a écrit :
>> I guess that you used something like
>> replace_all("toto|toto,", "input toto,", "regex")
>> in which case the first match takes precedence.
>>
>> You could reverse the order:
>> replace_all("toto,|toto", "input toto,", "regex")
>> or better yet, use something like
>> replace_all("toto,?", "input toto,", "regex")
>> where the comma is quantified (quantified matching is greedy by
>> default). That should give you the desired behaviour.
>>
>> Eddy
>>
>> On 04/22/2010 09:43 AM, Eric Bouyoux wrote:
>>> Hi,
>>>
>>> I have created a small macro to help me to modify some Verilog files to
>>> replace a line that contains some characters followed or not by a comma
>>> by the same line starting with 'input' and ending by a comma.
>>> Ex :
>>> the line contains :
>>> toto
>>> or the line contains :
>>> toto,
>>>
>>> In both case, I want to replace it by :
>>> input toto,
>>>
>>> The result I get is :
>>> if the line does not contain any comma, then it works.
>>> If the line already contains a comma, the resulting line contains 2
>>> commas.
>>>
>>> Could you help me ?
>>>
>>> Regards.
>>>
>>> Eric.
>
--
Eddy De Greef, Ph.D.
Senior Software Engineer
SSET/DC
Phone: +32 16 28 8119
Fax: +32 16 28 1515
E-mail: [email protected]
imec - aspire invent achieve
Mail address: Kapeldreef 75, B-3001 Leuven, Belgium
www.imec.be
<imec e-mail disclaimer: http://www2.imec.be/be_en/email-disclaimer.html>
--
NEdit Discuss mailing list - [email protected]
http://www.nedit.org/mailman/listinfo/discuss