Недавно я столкнулся с непростым поиском, которое не могу разгадать. Цель состоит в том, чтобы искать в css -классах и делать некоторые замены, а это не имеет большого значения.
Короче говоря, мне нужно найти в текстовом блоке все css -классы в строке, которая начинается с точки И, чтобы включить эту точку в группу захвата. Проблема в том, что в одной строке может быть несколько классов, и некоторые из них могут быть разделены пробелом, а некоторые нет.
Вот примеры таких строк:
Need to match:
.class
.class-media.other-class__item:nth-child(n)
.class-media .class-media__title::before
Don't need to match:
sometext.url.domain
Я могу легко сделать регулярное выражение, которое может выполнить мою задачу, не записывая точку перед именем класса, но с этим задача становится хитрой.
Пока я создаю это:
(^|\s)(\.)([a-zA-Z_-]{1}[\w-_]+)/g
, но это не так t позволяет захватывать классы без пробелов и не захватывать ".url.domain"
Вот пример для https://regex101.com/r/MWLjLa/1/
Примечание о проблеме XY: этот поисковый прогон в JS, так что, возможно, есть способ решить не только одно регулярное выражение.