<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Regular Explessions und Flex]]></title><description><![CDATA[<p>Ich versuche einen Parser zu bauen der den relevanten Text aus einer HTML Seite<br />
Extrahiert. Nun will ich erstmal das er alles was in bestimmten Tags ist rausschmeisst z.B. head und script.<br />
Mit dem &lt;head&gt; Tag funktioniert das auch, mit &lt;script&gt; nicht weil es ja mehrere script Tags geben kann und es wird dann alles vom ersten öffnenden tag bis zum letzten schliessenden tag gematcht.<br />
Wie muss die Regular Expression aussehen damit das richtig kommt.</p>
<p>Hier den code den ich bis jetzt habe</p>
<pre><code>%{
/* put your include files here */
%}

%option case-insensitive

ANYTAG	      &quot;&lt;&quot;[^&gt;]*&quot;&gt;&quot;
HEAD_START    &quot;&lt;&quot;head[^&gt;]*&quot;&gt;&quot;
HEAD_END      &quot;&lt;&quot;\/head[^&gt;]*&quot;&gt;&quot;
SCRIPT_START  &quot;&lt;&quot;script[^&gt;]*&quot;&gt;&quot;
SCRIPT_END    &quot;&lt;&quot;\/script[^&gt;]*&quot;&gt;&quot;
HEAD          {HEAD_START}(.|\n)*{HEAD_END}
SCRIPT        {SCRIPT_START}(.|\n)*{SCRIPT_END}

%%

{HEAD}|{SCRIPT}       // ignore everything that is in this tags      

%%

main( argc, argv )
    int argc;
    char **argv;
{
    ++argv, --argc;  /* skip over program name */
    if ( argc &gt; 0 )
        yyin = fopen( argv[0], &quot;r&quot; );
    else
        yyin = stdin;

     yylex();
}
%%
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/198509/regular-explessions-und-flex</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 20:24:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198509.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Nov 2007 10:09:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Regular Explessions und Flex on Thu, 22 Nov 2007 10:09:03 GMT]]></title><description><![CDATA[<p>Ich versuche einen Parser zu bauen der den relevanten Text aus einer HTML Seite<br />
Extrahiert. Nun will ich erstmal das er alles was in bestimmten Tags ist rausschmeisst z.B. head und script.<br />
Mit dem &lt;head&gt; Tag funktioniert das auch, mit &lt;script&gt; nicht weil es ja mehrere script Tags geben kann und es wird dann alles vom ersten öffnenden tag bis zum letzten schliessenden tag gematcht.<br />
Wie muss die Regular Expression aussehen damit das richtig kommt.</p>
<p>Hier den code den ich bis jetzt habe</p>
<pre><code>%{
/* put your include files here */
%}

%option case-insensitive

ANYTAG	      &quot;&lt;&quot;[^&gt;]*&quot;&gt;&quot;
HEAD_START    &quot;&lt;&quot;head[^&gt;]*&quot;&gt;&quot;
HEAD_END      &quot;&lt;&quot;\/head[^&gt;]*&quot;&gt;&quot;
SCRIPT_START  &quot;&lt;&quot;script[^&gt;]*&quot;&gt;&quot;
SCRIPT_END    &quot;&lt;&quot;\/script[^&gt;]*&quot;&gt;&quot;
HEAD          {HEAD_START}(.|\n)*{HEAD_END}
SCRIPT        {SCRIPT_START}(.|\n)*{SCRIPT_END}

%%

{HEAD}|{SCRIPT}       // ignore everything that is in this tags      

%%

main( argc, argv )
    int argc;
    char **argv;
{
    ++argv, --argc;  /* skip over program name */
    if ( argc &gt; 0 )
        yyin = fopen( argv[0], &quot;r&quot; );
    else
        yyin = stdin;

     yylex();
}
%%
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1407988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407988</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:09:03 GMT</pubDate></item><item><title><![CDATA[Reply to Regular Explessions und Flex on Thu, 22 Nov 2007 13:49:37 GMT]]></title><description><![CDATA[<p>Schlagt mich nicht wenn ich falsch liege, aber wenn ich das richtig mitbekommen habe hast du mit flex alein keine Chance, sondern musst das ganze in Zusammenarbeit mit bison lösen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408165</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Thu, 22 Nov 2007 13:49:37 GMT</pubDate></item><item><title><![CDATA[Reply to Regular Explessions und Flex on Thu, 22 Nov 2007 14:31:33 GMT]]></title><description><![CDATA[<p>ich weiß jezt nicht ob flex das kann, aber dein problem ist, dass Flex greedy matcht, also er zieht soviel aus dem eingabestream wie möglich, also vom ersten &lt;script&gt; bis zum letzten &lt;/script&gt;.</p>
<p>Schau mal nach, ob du mit Flex non-greedy matchen kannst. mit boost::regex geht das jedenfalls und perl kann das auch. aber flex is ja auch schon ganz schön alt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408199</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Thu, 22 Nov 2007 14:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to Regular Explessions und Flex on Thu, 22 Nov 2007 16:41:25 GMT]]></title><description><![CDATA[<p>Bei flex gibts keine speziellen Greedy-Operatoren. Aber man kann das Problem mit Zuständen lösen. Und zwar würde ich bei &lt;script&gt; in irgendeinen Zustand wechseln und in diesem alles ignorieren. Wird in diesem Zustand aber &lt;/script&gt; gelesen, wechselt man halt wieder zum Initialzustand. Die Syntax dazu verrät einem das Manual von flex <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408321</guid><dc:creator><![CDATA[minhen]]></dc:creator><pubDate>Thu, 22 Nov 2007 16:41:25 GMT</pubDate></item></channel></rss>