2016-05-24 2 views
1

I имеет следующую структуру URL:Match все до последнего наличие символа

http://domain.com/images/1/10/104/104901/7.jpg 

Как я могу соответствовать этим с регулярным выражением только до последних / косых черт, чтобы вернуть это?

http://domain.com/images/1/10/104/104901/ 

Благодарим за помощь!

Исправление: Я использую Javascript.

+0

(Без регулярного выражения: зеркальная строка, найдите первую косую черту, отбросьте все до этого, снова верните строку.) – Stormwind

+0

'^ (. + \ /) [^ \ /] * $' – arkascha

+0

@arkascha К сожалению, не повезло с этим: http://regexr.com/3dg17 – Lanti

ответ

2

В JavaScript вы можете использовать жадный матч для этого, чтобы соответствовать до последнего /:

/^.+\// 

RegEx Demo

В качестве альтернативы вы можете сделать замену части после последнего /:

var s = 'http://domain.com/images/1/10/104/104901/7.jpg' 
var r = s.replace(/[^/]+$/, '') 
//=> "http://domain.com/images/1/10/104/104901/" 
2

Это будет зависеть от языка.

Но для Python вы могли бы уйти с регулярным выражением из .+/

Но это просто быстрый тест (я не буду гарантировать надежность этого).

Here is it in action (regex101).

С небольшими изменениями вы можете получить его, чтобы пройти the regular expression site you were using.

.+\/ 

В качестве альтернативы, если вы не хотите использовать регулярные выражения, вы можете просто зеркало строки и находите, что первый слэш, как другие предложили.

2

An Альтернатива ES6 без использования регулярных выражений заключалась бы в использовании String.prototype.substring и String.prototype.lastIndexOf:

myString.substring(0, myString.lastIndexOf('/')) 

Итак, почему вы должны использовать это?

var myString = 'http://domain.com/images/1/10/104/104901/7.jpg'; 
console.time("With regex"); 
console.log(myString.replace(/[^/]+$/, '')); 
console.timeEnd("With regex");     // outputs 0.94ms 
console.time("With String methods"); 
console.log(myString.substring(0, myString.lastIndexOf('/'))); 
console.timeEnd("With String methods");   // outputs 0.53ms 

Benchmark, выполненный в Firefox на моем компьютере, но результаты должны быть одинаковыми во всем мире.