Регулярное выражение для соответствия строке значения ключа css

Я использую регулярное выражение для сопоставления значений css.

Строка ввода для соответствия

 font-size:25px;font-family:georgian;content:"' unicode given in pseudo © '";

Регулярное выражение, которое я использую для сопоставления

/.*\bcontent:(\s*[^;]*)/

Я использую $ 1, чтобы получить фактический строковый вывод регулярного выражения

Ожидаемый результат: "" Юникод задан псевдо & # 169 '"**

Но актуально "" Юникод задан псевдо & # 169

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

Спасибо

Попробуйте /.*\bcontent:\s*(.*);/ сопоставить с последним символом ; в строке. Или просто /\bcontent:\s*"([^"]*)";/ (демонстрация)

Wiktor Stribiżew 16.10.2018 11:40

Попробуйте \bcontent:\s*(".*?");, смотрите эта демонстрация.

Wiktor Stribiżew 16.10.2018 13:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
129
1

Ответы 1

Упростите: возьмите фрагмент текста в кавычках:

/.*\bcontent:(\"[^\"]*\")/

Если кто-то хочет упростить шаблон, можно опустить .* в шаблоне. Как и в моем комментарии, достаточно использовать /\bcontent:("[^"]*")/ (я просто поместил группу захвата внутри кавычек, чтобы исключить их из совпадения).

Wiktor Stribiżew 16.10.2018 11:55

его недостаток для содержания этого дела: "'@@@@@@@@@@@@@'", "'@@@@@@@@@@@@@ &&&&&&&&&&&&&&&&&&&&&& @@@@@@@@ @@@@@@@@@ ‌ @@@@@@@@@@@@@@@ '","' ‌ @@@@@@@@@@@@@&&&&&&& ‌ &&&&&&&&&&&&&&&& @ @@ ‌ @@@@@@@@@@@@@@@@@@@@ ‌ @@@@@@@@@@ '»;

Pavan Tiwari 16.10.2018 12:41

@ WiktorStribiżew Это работает, но не для всех случаев. В идеале регулярное выражение должно искать последний; который не находится внутри двойных / одинарных кавычек. Поскольку моя входная строка всегда будет иметь; после окончания каждого значения свойства.

Pavan Tiwari 16.10.2018 13:50

@Pavan, конечно, не работает, в вашей строке нет «содержимого».

Poul Bak 16.10.2018 14:08

@PavanTiwari Невозможно получить неопределенное количество подстрок в кавычках до первой точки с запятой без кавычек в регулярном выражении. Для этого вам нужно закодировать конкретный парсер.

Little Santi 16.10.2018 22:16

@PoulBak Я не уверен, о какой строке вы говорите, потому что все образцы строк содержат контент:

Pavan Tiwari 19.10.2018 16:30

Eaxmple, который вы указали в комментарии, не содержит строки «контент».

Poul Bak 19.10.2018 17:25

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