Har dragit igång ett gammalt project, och springer på problem med en gång. Testa kör med det här regexet: Hej Jimmy.Regex-problem
Det är tänkbart att jag är helt ute och cyklar, en så här är kodem:
private void buttonXP7_Click(object sender, System.EventArgs e)
{
string sText ="0";
try
{
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.
<code>
<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">
</code>
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.
Sv: Regex-problem
src=\"(?<sida>.*\.htm?)\"
Då får du fram top.htm osv
Vill du bara ha fram top så funkar detta:
src=\"(?<sida>.*)\.htm?\"Sv: Regex-problem
Fungerade kanon:
sText = "src=\"([+\\w]+?)\\.html?\"";
Nu den stora frågan, hur tar jag fram SubMatch i C#?
[REDIGERAT]
Jag har kommit så här långt:
string sText = "src=\"([+\\w]+?)\\.html?\"";
Regex repost = new Regex(sText,RegexOptions.IgnoreCase|RegexOptions.Compiled);
Match m;
for(m = repost.Match(rtf.Text);m.Success;m=m.NextMatch())
{
string nr=m.ToString();
int sStart = nr.IndexOf(@".")+1;
string sExct = nr.Substring(sStart,3);
rtf.SelectedText=Regex.Replace(nr,sExct,"asp");
...men jag gör tydligen fel, ingenting händer i richtextboxen...
[REDIGERAT IGEN]
Nu börjar det hända saker:
<code>
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");
rtf.SelectedText=nyText;
</code>
Och nu fungerar det.
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?
Jag trodde att jag bara hadde småproblem kvar, men icke.
<frame name="main5" src="navigation/left_navig.htm">
tar han inte, alltså galet i sText...
Vad göra?