Regex: кратчайшее совпадение не происходит

Попробуйте Mendeley (https://www.mendeley.com/)! Это делает работу как очарование!

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

4
задан 13 August 2018 в 14:56

1 ответ

Ваше регулярное выражение соответствует первому /, а затем любые 0 или более символов, отличные от символов разрыва строки, как можно меньше, вплоть до первого (крайнего) появления -vs-, а затем любые 0 или более символов, кроме линии прерывания, как можно меньше, вплоть до ближайшего крайнего левого /.

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

/[^/]*-vs-[^/]*/

См. демонстрацию regex

Подробности

/ - / [^/]* - 0 или более символов, отличных от / -vs- - буквальная подстрока [^/]* - 0 или больше символов, кроме / / - a /.

R test:

> library(stringr)
> str_extract_all("/sports/football/arsenal-vs-man-city/stats/", "/[^/]*-vs-[^/]*/")
[[1]]
[1] "/arsenal-vs-man-city/"
4
ответ дан 15 August 2018 в 17:02

Другие вопросы по тегам:

Похожие вопросы: