Thread Regular Expression tunen
(14 answers)
Opened by ramseier at 2005-02-08 10:59
Ich habe ein Script geschrieben welches mittels wget von einem anderen Server daten holt, Quelltext ersetzt, und dann die neue Seite ausgibt.
Das funktioniert soweit ganz gut, aber die riesige Regular Expression zwingt den Server in die Knie. Gibt es eine Möglichkeit diese RegExp performancemäßig zu optimieren? <!- Expression Anfang -> $body =~s/(<[Tt]+[Rr]+[a-zA-Z0-9:;&§,#%\- \?\.\"\'\=\_]*>)[\d\s]*(<[Tt]+[Dd]+[a-zA-Z0-9:;&§,#%\- \?\.\"\'\=\_]*">)(<[a-zA-Z0-9 <>=\"\':\-\.\_?%]*)(\/*)([a-zA-Z0-9\-]*)(\/*)([a-zA-Z0-9 <>=\"\':\-\.\_?%]*)(\/*)([a-zA-Z0-9 <>=\"\':\-\.\_%]*)([a-zA-Z0-9 <>=\"\':\-\.\_?%]*)([a-zA-Z0-9&=%\+\_\.\"]*>)(<[Ii]+[Mm]+[Gg]+ [Ss]+[Rr]+[Cc]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*"">)(<[Ii]+[Mm]+[Gg]+ [Ss]+[Rr]+[Cc]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*">)(<[\/Aa]*>)(<\/[Tt]+[Dd]+>)[\d\s]*(<[Tt]+[Dd]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*>)[\d\s]*([&;a-zA-Z0-9]*)[\d\s]*([a-z<>A-Z0-9 :=? \"\/\-\.\_]*[&a-zA-Z=]*)([0-9]*)([0-9a-zA-Z%&=\+\"\_]*>)([a-zA-Z0-9\s\.\-\_]*)(<\/[Aa]+>)[\d\s]*(<IMG SRC="\/basis-lsupport\/webnode\/modified.gif" BORDER="0" ALT="Modified">[\d\s]*)?(<\/[Tt]+[Dd]+>)[\d\s]*(<[Tt]+[Dd]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*>)[\d\s]*(<[a-zA-Z0-9\_\-\.\"\':= ]*[a-zA-Z0-9;,()\'\" ]*>)(<[Ii]+[Mm]+[Gg]+ [Ss]+[Rr]+[Cc]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*">)(<\/[Aa]+>)[\d\s]*(<\/[Tt]+[Dd]+>)[\d\s]*(<[Tt]+[Dd]+[a-zA-Z0-9:;&§,-_#% \?\.\"\'\=\_]*">)([a-zA-Z0-9 ]*)([a-zA-Z0-9<> \_\-\.&;:,\/]*)[\d\s]*([a-zA-Z<> \_\-\.&;:,\/=\"\']*)([0-9:\- ]*)([a-zA-Z<> \_\-\.&;:,\/=\"\']*)[\d\s]*([a-zA-Z<> \_\-\.&;:,\/=\"\']*)/$1\n$2$3$4$5$6$7$8$9$10$11$12$13$14$15\n$16\n$17$18$19$20$21$22\n\n$23$24\n$25\n<A HREF="" ONCLICK="javascript:sendLink($19,'$9');return false"><img src="http:%5C/\/web4bizl.med.siemens.de\/llimages\/pfeil.gif" border=0 alt="Link zum CMS übertragen"><\/a><A HREF="" ONCLICK="javascript:showLink('$19&docTitle=$9','$21');return false"><img src="http:%5C/\/web4bizl.med.siemens.de\/llimages\/punkt.gif" border=0 alt="Link anzeigen">\n$28\n$29$30$31$32\n$33$34$35\n$36$37$38/g; <!- Expression Ende ->\n\n <!--EDIT|ramseier|1107853222--> |