2015-11-23 7 views
1

Мои URL-адреса выглядеть следующим образом: www.example.com/historical+locations/london и www.example.com/special/londonНайти точную строку соответствия, которая содержит символ +

Я хочу увидеть, если URL содержит определенный формат. Ниже выражения работает для появления special, но знак + в исторических местах, кажется, испортил соответствие на этой строке. Я попытался выражения последующих, ни один из них не соответствует ... Я не могу показаться, чтобы соответствовать на строку, содержащую + характер

Dim urlMatch As Match = Regex.Match("/historical+locations/london", 
       "(^/special|^/\bhistorical+locations\b)/[a-zA-Z]", 
       RegexOptions.IgnoreCase) 

Dim urlMatch As Match = Regex.Match("/historical+locations/london", 
       "(^/special|^/historical+locations)/[a-zA-Z]", 
       RegexOptions.IgnoreCase) 

Dim urlMatch As Match = Regex.Match("/historical+locations/london", 
       "(^/special|^/historical+locations$)/[a-zA-Z]", 
       RegexOptions.IgnoreCase)      
+2

'' ^/(специальные | исторические \ + местоположения)/[a-zA-Z] + $ "' Удерживайте '+' – anubhava

ответ

3

Вы должны бежать знак плюс на регулярное выражение \+

Dim urlMatch As Match = Regex.Match("/historical+locations/london", 
       "(^/special|^/\bhistorical\+locations\b)/[a-zA-Z]", 
       RegexOptions.IgnoreCase) 
5

Вы должны избежать +, как это регулярное выражение иероглиф 1 или более [жадный]

, чтобы избежать регулярных выражений характер и сделать его статичность добавить \ перед + так:
\+

так спасаясь от /, а также вы получите (также комбинируя общее регулярное выражение, которое ускорит Ваш поиск):

Dim urlMatch As Match = Regex.Match("/historical+locations/london", 
      "^\/(special|historical\+locations)\/[a-zA-Z]+", 
      RegexOptions.IgnoreCase) 

^\/(special|historical\+locations)\/[a-zA-Z]+ 

Regular expression visualization

Debuggex Demo

Смежные вопросы