in reply to regex replace problem

i have collected the various situations in the following text , sorry for the confusion, :
title>TBGL_SetMaterialDiffuse</title
Heading1">TBGL_SetMaterialDiffuse</span
href="tbgl_SetMaterialDiffuse.htm">
">tbgl_SetMaterialDiffuse</
f_Code_Keyword">TBGL_DeleteMaterial</span

the target is to convert TBGL_SetMaterialDiffuse to SetMaterialDiffuse_gl
the same is for other words wich prefixed by TBGL_ whether it is small or capital letters.
the text is from a help file of an opengl module in which the author make a second syntax for the persons who does not like the prefixes, but he keeps the help file as the original, so since i want to use the second version, i must convert the help file myself whether manualy or other method
than you

Replies are listed 'Best First'.
Re^2: regex replace problem
by wallisds (Beadle) on Nov 18, 2010 at 20:22 UTC

    One of the following two options should work for all cases you listed. I had to use two because I don't know what your desired result is for the 'href' line.

    OPTION 1
    If you want your example
    "href="tbgl_SetMaterialDiffuse.htm">
    to look like
    "href="SetMaterialDiffuse.htm_gl">
    you should use the following:

    $tmp =~s/TBGL_([a-z]+(\.[a-z]+)?)/$1_gl/i;

    OPTION 2
    If you want that example to look like
    "href="SetMaterialDiffuse_gl.htm">
    use this:
    $tmp =~s/TBGL_([a-z]+)/$1_gl/i;

    I hope this helps :)

    Here is a quick script to test the cases

    #!/usr/bin/perl use strict; my @lines = ( 'title>TBGL_SetMaterialDiffuse</title', 'Heading1">TBGL_SetMaterialDiffuse</span', 'href="tbgl_SetMaterialDiffuse.htm">', '">tbgl_SetMaterialDiffuse</', 'f_Code_Keyword">TBGL_DeleteMaterial</span' ); foreach my $tmp (@lines) { print "$tmp\n"; #$tmp =~s/TBGL_([a-z]+(\.[a-z]+)?)/$1_gl/i; #case 1 $tmp =~s/TBGL_([a-z]+)/$1_gl/i; #case 2 print "$tmp\n\n"; }
      thank you wallisds , your second regex works well ,
      i have applied it to the htm file and replaced the words as expected
      thanks