Ik ben bezig met een UBB parser aan het bouwen in ASP.NET. Nu heb ik die parser gebasseerd op Regular Expressions. Ze werken heel fijn, maar ik heb er soms nog wat problemen mee.
Nu heb ik een probleem, waarbij ik op internet nou niet echt een oplossing voor kon vinden.
Ik wil URL tags gaan replacen naar HTML tags. De volgende URL's moeten worden vervangen:
Nu heb ik hiervoor 2 regular expression gebouwd, omdat bij 2 type URL's een naam bij zit en bij de andere 2 niet.
De volgen expressie heb ik voor de bovenste 2:
En de volgende voor de onderste 2:
Nu werken deze 2 elkaar tegen. Bij die onderste replaced die zo ook de url's die bij de bovenste hoort, dit wil ik niet.
Nu kan je controleren of er niet toevallig
Nu weet ik dat je met [^karakter] karakters kan uitsluiten. Maar als ik dit:
Maar hoe los ik dit probleem op
Zodat die onderste de URL's van de bovenste niet verplaatst
Nu heb ik een probleem, waarbij ik op internet nou niet echt een oplossing voor kon vinden.
Ik wil URL tags gaan replacen naar HTML tags. De volgende URL's moeten worden vervangen:
code:
1
2
3
4
| [url=http://www.blaat.nl]blaat[/url] [url="http://www.blaat.nl]blaat[/url] [url]http://www.blaat.nl[/url] http://www.blaat.nl |
Nu heb ik hiervoor 2 regular expression gebouwd, omdat bij 2 type URL's een naam bij zit en bij de andere 2 niet.
De volgen expressie heb ik voor de bovenste 2:
code:
met als replace expressie:1
2
| \\[url\="?(?<link>(http|https|ftp|gopher|mailto)\:\/\/([a-zA-Z0-9\:\-=&\?\.\/%]+)?) "?\](?<name>.*?)\\[\/url\] |
code:
1
| <a href="${link}" target="_blank">${name}</a> |
En de volgende voor de onderste 2:
code:
met als replace expressie:1
2
| (\\[url\])?(?<link>(http|https|ftp|gopher|mailto)\:\/\/([a-zA-Z0-9\:\-=&\?\.\/%]+)?) (\\[\/url\])? |
code:
1
| <a href="${link}" target="_blank">${link}</a> |
Nu werken deze 2 elkaar tegen. Bij die onderste replaced die zo ook de url's die bij de bovenste hoort, dit wil ik niet.
Nu kan je controleren of er niet toevallig
code:
ervoor staat.1
| [url= |
Nu weet ik dat je met [^karakter] karakters kan uitsluiten. Maar als ik dit:
code:
ervoor ga zetten, werkt dat niet.1
2
| [^u][^r][^l][^=][^"]? (met die " als optie, omdat hij ook kan ontbreken) |
Maar hoe los ik dit probleem op
[ Voor 27% gewijzigd door eghie op 27-10-2004 10:57 ]