yes to distinguish in file3 the first d;, it is sufficient to avoid it
by preceded WORD;\s+ \d+;
but I have tried that and it is not working
(?<!\w;|\w+;\s+)\b(\d+)(?!;\d|\d;\d;)
On 1 juil, 21:34, [EMAIL PROTECTED] (Rob Dixon) wrote:
> epanda wrote:
> > this is not working
>
> > here is an example of my file and I just want to replace with one
> > regexp
>
> > in file1 ddd ddd dddd by the value stored in my hash table
> > in file2 all d
> > in file3 not the first d; but all the others which is preceed by
> > WORD;
>
> > in all files
> > not replacing block like that d;d;dd
> > not replacing the 2 in WORD/WORD2;
>
> > file1
> > WORD/WORD2; d;d;dd; d;d;dd; d;d;d;
> > d;d;d; ddd ddd ddd ddd dddd
> > WORD/WORDWORD1/WORD1; d;d;dd; d;d;dd; d;d;d; d;d;d; ddd ddd
> > ddd ddd ddddd
>
> > file2
> > WORD; d; dd; dd; dd; d; d; d; dd; dd; d; ddd; ddd; ddd;
> > ddd; ddd; dddd;
>
> > file3
> > WORD/WORD1; d; d; ddd; dddd;
>
> > Thanks Rob if you can help
>
> I think you should post some real data so that we can see the difference
> between
> the fields you want translating. It's not clear, for instance, whether WORD is
> always the same word or if it can be used to determine the behaviour of the
> replacement.
>
> This seems to be close to what you need:
>
> s/ (?<!;) \b (\d+) (?!;\d) /exists $hash{$1} ? $hash{$1} : $1/exg;
>
> but I can't see how to distinguish the first d; in file3 to be left
> unmodified.
>
> Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/