Задать вопрос
@l4m3r

В ключевом слове определённой длины должна быть только одна точка и не в начале/конце. Как написать regexp?

Надо найти все слова \$[a-z0-9\.]{3,10}+ в тексте, но точка может быть только одна и не в начале или в конце.
То есть из строки "$aaa.aaa $bb4 $ccccccccccccccccc $.dddd $gg..ggf", матчить должно только $aaa.aaa, $bb4.
Как исправить регулярку?
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 2
dollar
@dollar
Делай добро и бросай его в воду.
(?<=\s|^)(?(?=\$\w+\.\w*\.)|\$\w[\w.]{1,8}\w)(?=[\s]|$)

Проверка
Ответ написан
@l4m3r Автор вопроса
(?<!\w)\$(?:(?:\w{1,3}\.\w{1,2})|(?:\w\.\w{3})|(?:\w{3,5}))(?!\w)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Наличие точки проверять регуляркой, длину через strlen. Или писать регулярку с 8 вариантами.
\$(?:[a-z0-9]\.[a-z0-9]{1,8}|[a-z0-9]{2}\.[a-z0-9]{1,7}|...|[a-z0-9]{8}\.[a-z0-9])
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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