webForumDet fria alternativet

RegEx problem i C#

2 svar · 295 visningar · startad av saw

sawMedlem sedan mars 20011 880 inlägg
#1

Har dragit igång ett gammalt project, och springer på problem med en gång.
Det är tänkbart att jag är helt ute och cyklar, en så här är kode:

private void buttonXP7_Click(object sender, System.EventArgs e)
        {
            string sText ="0";
            try
            {
                string sText = "src=\"([+\\w ]+?)\\.html?\"";
                Regex repost = new Regex(sText,RegexOptions.IgnoreCase|RegexOptions.Compiled);
                
                Match m; 
                string nr="";
                for(m = repost.Match(richTextBox1.Text);m.Success;m=m.NextMatch())
                {                            
                    if(m.Success)
                    {
                        nr=m.ToString();                        
                        MessageBox.Show(nr);
                    }
                    else
                    {
                        MessageBox.Show("Kan inte hitta någonting");
                    }
                }
            }
            catch(Exception fel)
            {
                MessageBox.Show(fel.Message,"buttonXP7_Click");;
            }
            MessageBox.Show(sText.ToString());
        }

Problemet:
I en richtextbox, så läses det in olika HTML-filer bl a med frameset.

<frame name="main3" src="top.htm" scrolling="no" marginwidth="0" marginheight="0" target="_self" noresize>

      <frame name="main4" src="loggar.htm">

      <frameset cols="3,10">
        <frame name="main5" src="navigation/left_navig.htm">

        <frame name="main2" src="main.htm" scrolling="auto" marginwidth="0" marginheight="0" target="_self">
      </frameset>
      <frame name="main6" src="fot.htm">

Som det är nu, så hittar den t ex
src="top.htm"
src="loggar.htm" osv
Men jag ville ha
top.htm
loggar.htm

Först så gäller det att hitta dem, sedan (har inte gjort den koden) så skall exstension ändras till asp.

Jag vore tacksam för hjälp här.
:r

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Kan du inte replaca bort (src=) och (") i ditt resultat då?

sawMedlem sedan mars 20011 880 inlägg
#3

Nej det blir galet.
Jag har komit hit:
sText = "src=\"([+\\w]+?)\\.html?\"";

Nu den stora frågan, hur tar jag fram SubMatch i C#? :q
[REDIGERAT]
Jo det börja att lyckas för mig:

string nr=m.ToString();
int sStart = nr.IndexOf(@".")+1;
string sExct = nr.Substring(sStart,3);
rtf.Select(m.Index,m.Length);
string nyText=Regex.Replace(m.ToString(),sExct,"asp");
tf.SelectedText=nyText;

Hursomhelst, koden är inte riktigt bra, om vi antar att den länken som skall byttas ut heter:
index.htm så fungerar det bra.
Heten den därimot html, shtm så fungerar det inte alls. Hur bör jag göra?

Lyckan är inte helt med mig, denna bit

    \<frame name="main5" src="navigation/left_navig.htm"\>

tar han inte, alltså galet i sText...

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)