Rexexp on part of a string

virtualsue virtuallysue at gmail.com
Tue Feb 19 17:05:51 GMT 2008


Ovid wrote:
> --- virtualsue <virtuallysue at gmail.com> wrote:
> 
>>>> I would like to restrict the part of a string a regexp is allowed
>>>> to operate on, For example I would like to ignore comments.
>>>> I would like
>>>>
>>>>   $x = " andrew andrew   # andrew " ;
>>>>   $x =~ s/andrew/black/g ;
>>>> to produce " black black   # andrew "
> <snip>
>>> you could simply split() on #, s/andrew/black/g and rejoin
>>> or use a lookahead
>>> s/andrew(?=.*\#)/black/g;
>> If I split on # then what happens if $x contains 'print
>> "==#andrew#andrew#===\n"  # more andrew'?
>>
>> Maybe the data would never look like that, but calling them comments
>> and using the '#' to delineate them makes you wonder.
> 
> I think the problem here is that we have an example of the data rather
> than a specification of it. 

No duh.

> The latter would make the question far
> easier to answer :)

Which is why we always have to plead/cajole/beat it out of our clients. This can be the very most 
fun part of the project in fact.





More information about the london.pm mailing list