---
title: "wF Parser"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/66134-wf-parser"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "icaaq"
published: "2003-01-25T20:25:34.000Z"
updated: "2003-03-13T13:50:48.000Z"
replies: 16
views: 2190
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/66134-wf-parser"
---

# wF Parser

## #1 — icaaq, 2003-01-25T20:25Z

Jag har detta pattern:

```
[red]
[ email](\.*)[ /email][/red]
```

hur får jag ut värdet mellan email-taggarna?

mvh icaaq

Permalänk: https://www.webforum.nu/p/66134

## #2 — renholm, 2003-01-25T22:14Z

Vet inte riktigt hur du får ut värdet men denna kod funkar för att byte "wf tagar" mot html.

```
text = Regex.Replace(text, "\\[B\\](?<boldText>.*)\\[/B\\]","<b>${boldText}</b>", RegexOptions.IgnoreCase);
```

Permalänk: https://www.webforum.nu/p/927219

## #3 — Leffo, 2003-01-26T00:44Z

Han kör väl antagligen en MatchCollection som plockar ut allt som matchar mönstret.

Permalänk: https://www.webforum.nu/p/927278

## #4 — icaaq, 2003-01-26T16:33Z

> **Leffo skrev:**
>
> Han kör väl antagligen en MatchCollection som plockar ut allt som matchar mönstret.

precis och jag har ändrat lite på mitt pattern

```
[red]
new Regex(@"\[email\](.|\s)*?\[\/email\]"); 
[/red]
```

Jag vet bara inte var jag ska sätta \<1\>

nån som vill hjälpa

mvh icaaq

Permalänk: https://www.webforum.nu/p/927674

## #5 — Leffo, 2003-01-26T18:39Z

Vad menar du med sätta \<1\>?
Jag och säkert många andra kan försöka hjälpa om du förklarar lite mer utförligt.

Permalänk: https://www.webforum.nu/p/927769

## #6 — icaaq, 2003-01-27T08:04Z

Ok Jag ska försöka att förklara lite bättre, Jag har hittat ett exempel i Doc:en där man hittar alla href´s i en text. Det förslaget ser ut så här:

```
[red]
Regex r;
			Match m;
			string t = TextToParse;
			string f = "";
			r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))",
				RegexOptions.IgnoreCase|RegexOptions.Compiled);
			for (m = r.Match(t); m.Success; m = m.NextMatch()) 
			{
				 f = "Found href " + m.Groups[1] + " at " 
					+ m.Groups[1].Index;
			}
[/red]
```

Då tänkte jag att jag bara skulle byta ut detta pattern mot ett som passade mina ändamål, och mitt fungerande pattern ser ut så här:

```
[red]
new Regex(@"\[email\](.|\s)*?\[\/email\]");
[/red]
```

mvh icaaq

Permalänk: https://www.webforum.nu/p/928089

## #7 — icaaq, 2003-01-27T12:27Z

Jag har kommit så här långt:

```
[red]
Regex r;
  Match m;
  string t = TextToParse;
  string f = "";
  r = new Regex(@"\[email\](.*)\[\/email\]",
    RegexOptions.IgnoreCase|RegexOptions.Compiled);
  for (m = r.Match(t); m.Success; m = m.NextMatch())
  {
    t = Regex.Replace(t, @"\[email\](.*)\[\/email\]", ReplacementTag.Replace("##contents##", m.Groups[1].ToString()),RegexOptions.IgnoreCase|RegexOptions.Compiled);
[/red]
```

och den funkar ju bra men endast om man har en  lala för om jag har två eller flera så blir det endast en lång länk......nån som känner sig manad att hjälpa mig?

mvh icaaq

Permalänk: https://www.webforum.nu/p/928305

## #8 — icaaq, 2003-01-27T13:00Z

Ok känner mig ganska ensam i denna tråd men, nu har jag kommit så här långt:

```
[red]
Regex r;
Match m;
string t = TextToParse;
r = new Regex(@"\[email\](.*?)\[\/email\]",
	RegexOptions.IgnoreCase|RegexOptions.Compiled);
for (m = r.Match(t); m.Success; m = m.NextMatch())
{
	t = Regex.Replace(t,@"\[email\](.*?)\[\/email\]", ReplacementTag.Replace("##contents##", m.Groups[1].ToString()));
}[/red]
```

Problemet är att alla mailadresser blir som den första, så har jag <isac@meditrix.nu> som första adress så resulterar alla addresser i <isac@meditrix.nu>

hur kan jag få det att stämma :OO

mvh icaaq

Permalänk: https://www.webforum.nu/p/928337

## #9 — Leffo, 2003-01-27T17:01Z

Vet inte om dt här hjälper dig, men testa iaf...

string: Texten som ska kollas
pattern: @"\\\[email\\\](.\*?)\\\[\\/email\\\]"

MatchCollection MC = Regex.Matches(stringen, pattern);
		foreach (Match mm in MC)
		{
			matches = Convert.ToString(mm);
här kan du göra vilken redigering som helst om du så vill
			nån_string += matches;
		}

Permalänk: https://www.webforum.nu/p/928558

## #10 — icaaq, 2003-01-27T18:36Z

JAg har nog slitit lite väl mycket för att få detta att fungera, så här blev det:

```
[red]
private static string QuickTag(string TextToParse, string OpenTag, string CloseTag, string ReplacedOpenTag, string ReplacedCloseTag)
{			
	string t = TextToParse;
	t = Regex.Replace(t, @"\["+OpenTag+@"\](?<fetch>.*)\[/"+CloseTag+@"\]", ReplacedOpenTag+"${fetch}"+ReplacedCloseTag, RegexOptions.IgnoreCase);
	return t;
}
private static string Tag(string TextToParse, string OpenTag, string CloseTag, string ReplacementTag)
{	
	string t = TextToParse;
	t = Regex.Replace(t, @"\["+OpenTag+@"\](?<contents>.*?)\["+CloseTag+@"\]", ReplacementTag.Replace("##contents##","${contents}"));
	return t;		
}
private static string AttributeTag(string TextToParse, string OpenTag, string CloseTag, string ReplacementTag)
{	
	string t = TextToParse;
	t = Regex.Replace(t, @"\["+OpenTag+@"=(?<attribue>.*?)\](?<contents>.*?)\["+CloseTag+@"\]", ReplacementTag.Replace("##contents##","${contents}").Replace("##attr##", "${attribue}"));
	return t;		
}
[/red]
```

Dem anropar jag så här:

```
[red]
public static string Parse(string TextToParse)
{
	string _p = TextToParse;
	//# Här fyller du på med taggar

	_p = QuickTag(_p, "[b]", "[/b]", "<b>", "</b>");
	_p = QuickTag(_p, "[red]", "[/red]", "<font style='color:red;'>", "</font>");

	_p = Tag(_p, "email", "/email", "<a href='mailto:##contents##'>##contents##</a>");
	_p = Tag(_p, "img", "/img", "<img src='##contents##'>");

	_p = AttributeTag(_p, "url", "/url", "<a target='_blank' href='##attr##'>##contents##</a>");

	//# Returnerar den parsade texten.
	return _p;
}
[/red]
```

DEnna är ju inte optimal men den funkar iaf lite ;)

mvh icaaq

Permalänk: https://www.webforum.nu/p/928651

## #11 — icaaq, 2003-01-28T06:49Z

Nu är den nästan klar bara själva URLIfyen som fattas och jag kan inte få till den. Jag har tagit en del av emissionens wFParser och tagit ut URLIfy koden och den ser ut så här:

```
[red]
Public Function ParseURLs(TextToParse,LinkTarget)
dim f_strText
f_strText=TextToParse
m_objRxp.Pattern="(^|[^""])([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:|file://|[url]telnet://[/url]|[url]gopher://[/url])([\w/#~:.,?+=&%@!\-]*?)([\s.:?\-]*[^\w/#~:.,?+=&%@!\-]|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a target=""" & LinkTarget & """ href=""$2$3"">$2$3</a>$4")
m_objRxp.Pattern="(^|[^\w/>])(www\.[\w/#~:.,?+=&%@!\-]*?)([\s.:?\-]*[^\w/#~:.,?+=&%@!\-]|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a target=""" & LinkTarget & """ href=""http://$2"">$2</a>$3")
'objRxp.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
m_objRxp.Pattern="(^|[^:>\w])([\w\.]*@[\w\.\-]*\.\w{2,3})(\b|$)"
f_strText=m_objRxp.Replace(f_strText,"$1<a href=""mailto:$2"">$2</a>")
ParseURLs=f_strText
End Function[/red]
```

Kanske vi kan hjälpas åt att konvertera till C# :OO

mvh icaaq

Permalänk: https://www.webforum.nu/p/928991

## #12 — icaaq, 2003-01-28T08:40Z

ÄNTLIGEN

Jag tror jag har lyckats att konvertera wFParser koden som emissionen skrev. Så om ni som är wF trogna skulle vilja testköra denna funktion som är skriven i C# och se om den har några buggar. Så kan vi nog skapa en slutgiltig wFParser till slut.

mvh icaaq

Bilagor:

- [icaaq.codeify.txt](https://www.webforum.nu/a/982.txt)

Permalänk: https://www.webforum.nu/p/929033

## #13 — erka, 2003-01-28T08:47Z

Trevligt icaaq, jag hade dock för mig att wFParser koden som emissionen skrev hade någon bugg, snackades om det i asp forumet någon gång för ca ett år sedan.

Permalänk: https://www.webforum.nu/p/929037

## #14 — icaaq, 2003-01-28T09:54Z

Jo, jag tror det har med url:ar och radbrutningar att göra.....

Jag har hittat nått mysko med koden också om ni gör en kod tag så blir det inte som det ska :( jag var tvungen att lägga till en extra \< innan \<p\> taggen :OO

det konstiga är att den funkar perfekt vid nån av color taggarna

nån som an se felet?

mvh icaaq

Permalänk: https://www.webforum.nu/p/929081

## #15 — PatrikB, 2003-01-28T10:26Z

Det med emissions URLify så var det ngt som inte vart korrekt.
Kommer ihåg att jag "jobbade" med den för ett bra tag sedan och fick till så att det funkade .... eller så minns jag fel.

Nu har jag inte dubbelkollat mot emissions orginal kod, men denna använder jag på en hel del ställen:

```
Function URLify(strInString,strTarget)
	Dim strDelimiter,objRxp
	strDelimiter = Chr(0)
	Set objRxp = New RegExp
		objRxp.Global = True
		objRxp.IgnoreCase = true
		objRxp.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
			strInString = objRxp.Replace(strInString, "<a href=""mailto" & strDelimiter & ":$1"">$1</a>")
		objRxp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:)(\S)(\S+)"
			strInString = objRxp.Replace(strInString, "<a target=""" & strTarget & """ href=""$1$2" & strDelimiter & "$3"">$2" & strDelimiter & "$3</a>")
		objRxp.Pattern = "(www\.(\S)(\S+))"
			strInString = objRxp.Replace(strInString, "<a target=""" & strTarget & """ href=""http://$1"">$1</a>") 
	URLify = Replace(strInString, strDelimiter, "")
End Function
```

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/929096

## #16 — icaaq, 2003-01-31T13:09Z

Då jag nu har testat min Codeify lite så ser jag att den inte funkar speciellt bra jag börjar med det lilla problem.

Hur ska jag modefiera denna för att det ska gå att  använda ett  \<br\> mellan taggarna 

```
[red]
		private static string QuickTag(string TextToParse, string OpenTag, string CloseTag, string ReplacedOpenTag, string ReplacedCloseTag)
		{			
			string t = TextToParse;
			t = Regex.Replace(t, @"\["+OpenTag+@"\][b](?<fetch>.*?)[/b]\["+CloseTag+@"\]", ReplacedOpenTag+"${fetch}"+ReplacedCloseTag, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
			return t;
		}
[/red]
```

mvh icaaq

Permalänk: https://www.webforum.nu/p/934618

## #17 — icaaq, 2003-03-13T13:50Z

Jag väcker denna :OO 
Hur ska jag göra för att kunna använda mig av en enterslagning, (ASCII 10) mellan taggarna......det är alltså det feta som ska modifieras (tror jag)

Mvh icaaq

Permalänk: https://www.webforum.nu/p/977071

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/66134-wf-parser
