Toon posts:

[ASP] Regexen in asp...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Yow, ik heb dus op web-con regexen in PHP gevonden, heel leuk...maar dat moet ik niet hebben...
Het script in php ziet er zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?

function italic($input) { 
$pattern = "![i](.*?)[/i]!is"; 
$replace = "<i>\1</i>"; 
$output = preg_replace($pattern, $replace, $input); 

return $output; 
} 

?> 

Nu heb ik zelf ff wat zoekwerk verricht, want ik wil dit script natuurlijk in ASP :)
Dit is wat ik heb gevonden:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
InitialString = "Daar staat het schaap"

Set RegularExpressionObject = New RegExp

With RegularExpressionObject
.Pattern = "het schaap"
.IgnoreCase = True
.Global = True
End With

ReplacedString = RegularExpressionObject.Replace(InitialString, "de koe")

Response.Write "Eerst: " & InitialString & "<br>"
Response.Write  "Nu: " & ReplacedString

Set RegularExpressionObject = nothing
%>

Dit werkt natuurlijk allemaal leuk en aardig, maar dat onderste in asp had ook gewoon met de Replace() functie gekund...en daar heb ik nix aan :'(
Helaas stond er op die site geen verdere uitleg hoe ik nou hetzelfde doel kan berijken zoals het php script wel kan....

Wie helpt mij verder?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Veel verder helpen kan ik je niet, maar ik heb wel een mooie site voor je over Regular Expressions in ASP

http://www.4guysfromrolla.../regularexpressions.shtml

Er staan vrij veel artikelen over, van de basis tot moeilijker.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Verder kan je ook nog naar diverse PHP sites kijken aangezien daar ook diverse zeer goede regex oplossingen zijn...

Over het algemeen zijn deze goed over te nemen... Je hoef meestal maar één of twee dingen te wijzigen...

Verwijderd

Topicstarter
Hm-hmm juist ja,
Ik heb ook wel dit gevonden:
.Pattern = "<[^>]+>"
maar dan staat bij de replace "", dus vervangt ie < en > met niks...en dat moet ik jou juist niet hebben...hier de volledige code:
ASP:
1
2
3
4
5
6
7
8
9
10
11
Dim RegularExpressionObject As New VBScript_RegExp_10.RegExp

With RegularExpressionObject
.Pattern = "<[^>]+>"
.IgnoreCase = True
.Global = True
End With

Text1.Text = RegularExpressionObject.Replace(Text1.Text, "")

Set RegularExpressionObject = Nothing

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
code:
1
2
.Pattern = "\\[i\](.*?)\\[/i\]"
objRE.Replace( text, "<i>$1</i>" );

Verwijderd

Topicstarter
Gert schreef op 02 oktober 2002 @ 11:41:
code:
1
2
.Pattern = "\\[i\](.*?)\\[/i\]"
objRE.Replace( text, "<i>$1</i>" );
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
InitialString = "Daar staat het [i]schaap[/i]"

Set RegularExpressionObject = New RegExp

With RegularExpressionObject
.Pattern = "\\[i\](.*?)\\[/i\]"
.IgnoreCase = True
.Global = True
End With

ReplacedString = RegularExpressionObject.Replace(InitialString, "<i>$1</i>")

Response.Write "Eerst: " & InitialString & "<br>"
Response.Write  "Nu: " & ReplacedString

Set RegularExpressionObject = nothing
%>

Deze geeft helaas een error:
code:
1
2
3
4
5
Microsoft VBScript runtime error '800a139a' 

Unexpected quantifier 

/tests/regexen.asp, line 12

En ik denk dus dat de error in het .Pattern zit, want als ik "$1" uit replace weghaal geeft ie dezelfde error...

  • Shir
  • Registratie: November 2000
  • Laatst online: 25-11-2025
Regular expressions became available in VBScript with the 5.0 release. Non-greedy repetition, however, wasn't supported! With the latest release of Microsoft's scripting engines (version 5.5), non-greedy repetition is supported.
Die ? in (.*?) geeft aan dat 'ie non-greedy moet zoeken. Dat gaat niet werken met versie lager dan 5.5. Zie http://www.4guysfromrolla.com/webtech/103100-1.shtml

Misschien werkt dit (niet getest):
code:
1
.Pattern = "\\[i\]([^\\[]*)\\[/i\]"

Verwijderd

Topicstarter
Shir schreef op 02 oktober 2002 @ 12:47:
[...]

Die ? in (.*?) geeft aan dat 'ie non-greedy moet zoeken. Dat gaat niet werken met versie lager dan 5.5. Zie http://www.4guysfromrolla.com/webtech/103100-1.shtml
Dat komt dus door de server-software :'(
K*t want het is gewoon een gratis webspace :'(


Hmm vatzigjes, bovenstaande code werkt wel zonder dat "?" :D
Nice...en als gert(of iemand anders) nou nog ff kan uitleggen waar al die tekens in .Pattern voor staan dan kan ik daar zelf mee verder... :)

Edit: Woei thxs man gert, ik heb er nu dit van gemaakt...EN HET WERKTE METEEN :D :D
/me feels great :)
ASP:
1
2
3
4
5
[...]
.Pattern = "\[url=(.*)\](.*)\\[/url\]"
[...]
ReplacedString = RegularExpressionObject.Replace(InitialString,"<a href= $1 > $2 </a>")
[...]

Verwijderd

Topicstarter
Nogmaals bedankt, ik heb nu zelf ook hetvolgende inelkaar geflanst voor mijn forum:
code:
1
[url=iets][img]urlvanhetplaatje[/img][/url]

en het werkt!

Hier de asp code die alles goed maakt:
ASP:
1
2
3
4
5
6
7
8
9
10
11
Set RegularExpressionObject = New RegExp

With RegularExpressionObject
.Pattern = "\[url=(.*)\]\\[img\](.*)\\[/img\]\\[/url\]"
.IgnoreCase = True
.Global = True
End With

bericht = RegularExpressionObject.Replace(bericht,"<a href='$1' target='new'>[img]'$2'[/img]</a>")

Set RegularExpressionObject = nothing

:*)
Hier staat een live voorbeeld...Mijn leete forum!
Pagina: 1