2009-05-25 5 views
0

Langue: aspComment échapper un caractère méta dans une expression régulière

C'est échantillon de mon code:

str = "www.example.com/gotobuy.aspx?id=1234" 
key_word = ".obuy." 
Dim regEx 
Set regEx = New RegExp 
regEx.Pattern = key_word 
regEx.IgnoreCase = True 
regEx.Global = True 
Set Matches = regEx.Execute(str) 
if matches.count > 0 then 
    new_string = str 
    For Each Match in Matches 
     new_string = replace(new_string,match.value,"") 
    Next 
else 
    new_string = str 
end if 
response.write new_string 

La réponse affiche:

www.example.com/goaspx?id=1234 

Je sais que (.) est l'un des caractères méta. Mais si je veux (.) Est juste (.), Pas un seul mot. Que devrais-je faire?

Merci de votre aide!

+0

conseil non sollicité: utiliser RegExp.Replace() plutôt que de le remplacer(): 'new_string = Regex.Replace (str, '') '. De cette façon, vous n'avez pas besoin de faire une boucle sur les matchs. – outis

Répondre

2

Depuis. est un métacaractère, pour correspondre à '.' vous devez échapper, comme en \.

2

Utilisez \. pour faire correspondre un . littéralement.

1

Vous devez échapper les méta-caractères que vous voulez traiter littéralement. Dans la plupart des systèmes regex, cela signifie le préfixer avec un antislash. par exemple: "foo\.bar"

3

En plus d'échapper à la . avec \, beaucoup de gens aiment utiliser une classe de caractères avec seulement . en elle: [.], ils trouvent plus agréable esthétiquement. Vous ne rencontrez pas non plus le problème des multiples niveaux d'échappement. Avec \, vous devrez peut-être utiliser plusieurs niveaux d'échappement si la version de chaînes de votre langage traite \ comme un caractère spécial: "\\.".

Questions connexes