Avatar billede erve Nybegynder
15. maj 2006 - 17:47 Der er 10 kommentarer og
1 løsning

regex find alle <tr> tags

Kan nogen give mig reularexpression til at finde indholdet af alle <tr> tags.
Den skal selvfølgelig kunne tage både <tr>, <TR>, <tr colspan ell. lig> osv.
Jeg ved godt at der findes tools og det har jeg haft gang i, så det er ikke henviosninger til den slags tools jeg er interesseret i.
Det nærmest jeg kommer det er noget lign dette her:
<(?<tag>tr)[^>]*>(?<text>.*)</\k<tag>>
men det virker ikke helt.
Avatar billede nielle Nybegynder
15. maj 2006 - 18:14 #1
Et bud:

using System;
using System.Text.RegularExpressions;

namespace e709453
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "... <tr colspan ell. lig>Noget inden i tr</Tr> ...";
            //<(?<tag>tr)[^>]*>(?<text>.*)</\k<tag>>

            Regex re = new Regex("<tr[^>]*>(?<text>[^<]*)</tr>", RegexOptions.IgnoreCase);
            Match rem = re.Match(text);

            if (rem.Success)
            {
                Console.WriteLine(rem.Groups["text"].Value);
            }
        }
    }
}
Avatar billede erve Nybegynder
15. maj 2006 - 18:45 #2
Ok, det kan godt være jeg har udtrykt mig forkert, men jeg HAR den kode du giver mig. Det er selve udtrykket det er galt med, og det har du vist ikke lavet om på, vel?
Avatar billede nielle Nybegynder
15. maj 2006 - 18:49 #3
Joda:

Dit: <(?<tag>tr)[^>]*>(?<text>.*)</\k<tag>>
Mit: <tr[^>]*>(?<text>[^<]*)</tr>

Desuden har jeg sat RegexOptions.IgnoreCase på, og det var en del af den funktionalitet du spurgte efter.
Avatar billede erve Nybegynder
15. maj 2006 - 21:17 #4
Nåh ja, det havde jeg ikke set sorry.
Anyway, så er den ikke helt hjemme endnu.
Mit eksempel er flg:

<TR><TD>aaa111</TD><TD>bbb111</TD></TR>
match ikke dette
<TR><TD>aaa222</TD><TD>bbb222</TD></TR>
match ikke dette

Den skal matche på de 4 TD'er, og det virker ikke endnu
Avatar billede nielle Nybegynder
15. maj 2006 - 21:30 #5
using System;
using System.Text.RegularExpressions;

namespace e709453
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = @"<TR><TD>aaa111</TD><TD>bbb111</TD></TR>\r\nmatch ikke dette\r\n<TR><TD>aaa222</TD><TD>bbb222</TD></TR>\r\nmatch ikke dette";

            //<(?<tag>tr)[^>]*>(?<text>.*)</\k<tag>>

            Regex re = new Regex("<tr[^>]*>(?<text>.*?)</tr>", RegexOptions.IgnoreCase);
            Match rem = re.Match(text);

            while (rem.Success)
            {
                Console.WriteLine(rem.Groups["text"].Value);

                rem = rem.NextMatch();
            }
        }
    }
}
Avatar billede nielle Nybegynder
15. maj 2006 - 21:33 #6
Eller sådan:

using System;
using System.Text.RegularExpressions;

namespace e709453
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "<TR><TD>aaa111\r\n</TD><TD>bbb111</TD></TR>\r\nmatch ikke dette\r\n<TR><TD>aaa222</TD><TD>bbb222</TD></TR>\r\nmatch ikke dette";

            //<(?<tag>tr)[^>]*>(?<text>.*)</\k<tag>>

            Regex re = new Regex("<tr[^>]*>(?<text>.*?)</tr>", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            Match rem = re.Match(text);

            while (rem.Success)
            {
                Console.WriteLine(rem.Groups["text"].Value);

                rem = rem.NextMatch();
            }
        }
    }
Avatar billede nielle Nybegynder
15. maj 2006 - 21:35 #7
Den sidste variant kan også klare at der er linjeskift inde imellem i dine <tr>-par:

<TR><TD>aaa111
</TD><TD>bbb111</TD></TR>
match ikke dette
<TR><TD>aaa222</TD><TD>bbb222</TD></TR>
match ikke dette
Avatar billede erve Nybegynder
15. maj 2006 - 21:50 #8
YES SAEJT!!! Så er den der. Takker - smider du et svar hvis du er interesseret i points
Avatar billede nielle Nybegynder
15. maj 2006 - 21:52 #9
Svar :^)
Avatar billede nielle Nybegynder
15. maj 2006 - 21:53 #10
Nogen spørgsmål til løsningen?
Avatar billede erve Nybegynder
15. maj 2006 - 23:33 #11
nej ellers tak. jeg har kørt den gennem Expresso's analkyzer, og det ser forståeligt ud
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester