2016-09-02 2 views
2

У меня есть следующая строка:Regex для разбора суб строку URL

function init() { 

      $.get("/example/abc/include.txt", function(script) { 
       code goes here 
      }); 
      $.get("<http>://abc.com/example/abc/dontinclude.txt", function (script) { 
       code goes here 
       } 
      }); 
     } 

Я пытаюсь разобрать строку выше, чтобы получить список всех URL, который начинается с/например, и заканчивается с именем файла, как abc.txt ,

Поэтому требуемый список должен быть: /example/abc/include.txt

Я попытался с помощью следующего регулярного выражения:

(\/)[^\s\/]?(example\/)(\w+\/)*(\w+.\w{3,4}) 

Но список два URL-адреса, как показано ниже:

/example/abc/include.txt 
/example/abc/dontinclude.txt 

Я изменил выше regex to:

\"(\/)[^\s\/]?(example\/)(\w+\/)*(\w+.\w{3,4})\" 

Это возвращает требуемый URL-адрес, но я хочу исключить двойные кавычки из результата.

Любая идея, как удалить двойные кавычки с помощью регулярного выражения?

Спасибо.

ответ

1

Это зависит от того, как вы читаете согласованные результаты. Вы можете использовать другую группу окружающих все, кроме двойных кавычек:

\"((\/)[^\s\/]?(example\/)(\w+\/)*(\w+\.\w{3,4}))\" 

или вы могли бы использовать позитивный назад ', который гарантирует, что символ перед двойная цитата:

(?<=\")(\/)[^\s\/]?(example\/)(\w+\/)*(\w+\.\w{3,4}) 
+0

Спасибо за ответ. Положительный прогноз (? <= \ ") Не является ароматом cge regex. Я попробовал то же самое в C# flavor' (? = \ ") (\ /) [^ \ S \ /]? (Пример \ /) (\ W + \ /) * (\ W + \. \ ш {3,4}) '. Но это не сработало. – Pabdev

+0

Положительный lookbehind - CUE regex flavor. (см. https://msdn.microsoft.com/de-de/library/az24scfc(v=vs.110).aspx). Вы избежали двойной цитаты? '@ "(? <= \" ") (\ /) [^ \ S \ /]? (Пример \ /) (\ W + \ /) * (\ W + \. \ Ш {3,4})"' – Yosh

+0

Да, черт возьми, вы правы. Я проверил его в неправильном инструменте. Теперь он работает отлично. Благодарю. – Pabdev