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/