Как я могу захватить строку только в url () с регулярным выражением? - PullRequest
0 голосов
/ 13 февраля 2020

Я постараюсь сделать это кратким.

Я хочу записать только строку в скобках:
background-image:url()

Я пытался часами, и лучшее, что я мог придумать, было (?<!\@\*)(?<=url\().*(?=\)).
( Попробуйте онлайн )

Это почти идеально, за исключением случаев, когда в режиме онлайн запущен подобный код или любой уменьшенный код CSS:
background-image:url(/images/products/test@2x.png);height:0;background-image:url("/images/products/test@2x.png")

Он охватывает все: от первых открытых скобок до последних закрытых скобок, включая нерелевантные стили между ними.

Я хочу захватить строку только между url().

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

используйте регулярное выражение

(?<=background-image:url\()(.+?)(?=\))

можно найти все xxx в background-image:url(xxx), в то время как background-image:url()

вы можете проверить в: https://regexr.com, вот так:

Примечание:

  1. о look around = look ahead и look behind вот мое резюме:

более подробно можно обратиться к (китайский) учебник: 32 断言 · 应用 广泛 的 超强 搜索 : 正 则 表达式
1 голос
/ 13 февраля 2020

Использование положительного и отрицательного внешнего вида: /(?<=background-image:\s*url\().*(?=\))/ig вернет все внутри вызова background-image: url(), с \s* для захвата пробелов.

0 голосов
/ 13 февраля 2020

Ниже приведено регулярное выражение, которое будет работать для вас:

(?<!\@\*)(?<=url\().*?(?=\))

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...