I'm guessing somebody is first testing to see if anything is found, and if it does, replace it.
Don't do that. Just plain s/// is enough, it won't do anything if nothing is found, so it's safe.
Now all you've got is needless repetition, and a source of errors if somebody does a bad job copy/pasting after the regex is updated.
Now, as far as what it's trying to match, it's hard to tell formatted like this, but it looks like somebody tried to match a string looking like "%TABLE ... %" with something (of a specific format) instead of the "...", and in that something, the string 'name="History' (plus something more) ought to be found.
Well: it is wrong. It'll most likely do a substitution on a larger string, spanning more than one such string, if the first one doesn't contain that substring. As a simple example: it'd match a string like "%TABLE% blah blah blah %TABLE name="History"(something)%" as a single match. I don't think that is what's intended.
Better would be to try in match the string in a first step, and in the substitution, see if it contains that substring. If it does: substitute; if it doesn't: leave the original matched string.
At the very least, you should forbid presence of a "%" character between the "%TABLE" and the "name=" parts.
In reply to Re: Regular expression Problem
by bart
in thread Regular expression Problem
by archimca
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |