PHP ver gevorderde |
|
hallo,
ik ben wat bezig op de website van reguliere expressies om sommige stukjes bij te leren zoals ook atomic grouping nu snap ik iets niet wat ze uit leggen bij het stuk over een heel html-document matchen:
Citaat: Suppose you want to use a regular expression to match a complete HTML file, and extract the basic parts from the file. If you know the structure of HTML files, writing the regex <html>.*?<head>.*?<title>.*?</title>.*?</head>.*?<body[^>]*>.*?</body>.*?</html> is very straight-forward. With the "dot matches newlines" or "single line" matching mode turned on, it will work just fine on valid HTML files.
Unfortunately, this regular expression won't work nearly as well on an HTML file that misses some of the tags. The worst case is a missing </html> tag at the end of the file. When <html> fails to match, the regex engine backtracks, giving up the match for </body>.*?. It will then further expand the lazy dot before </body>, looking for a second closing </body> tag in the HTML file. When that fails, the engine gives up <body[^>]*>.*?, and starts looking for a second opening <body[^>]*> tag all the way to the end of the file. Since that also fails, the engine proceeds looking all the way to the end of the file for a second closing head tag, a second closing title tag, etc. [http://www.regular-expressions.info/atomic.html laatste paragraaf]
Ik snap bv. niet goed waarom de engine zou backtracken omdat hij <html> niet zou kunnen mactchen?
Iemand die miss ook een goede uitleg over atomic grouping in het nederlands heeft?
Alvast bedankt
|