Что такое висячие метасимволы в регулярных выражениях?
В Ruby я написал простое регулярное выражение, чтобы найти первое {
:
txt.gsub! /^.*{/, '{'
Всякий раз, когда я запускаю это, все, что прошло после этой точки для моих целей, работает нормально, однако есть небольшая ошибка, которая читается в соответствии с WARNING: Dangling metacharacter detected.
Что конкретно представляют собой висячие метасимволы, и как бы я изменил свое регулярное выражение, чтобы оно было настолько явным и эффективным, насколько это возможно?
1 ответ
Решение
{
имеет особое значение в регулярном выражении.
PATTERN{m,n}
Выше совпадения PATTERN повторяются много раз.
Если вы хотите избежать этого предупреждения (буквально совпадать {
) избежать этого.
txt.gsub! /^.*\{/, '{'
ОБНОВИТЬ
КСТАТИ, /^.*{/
не ловит первый {
так как .*
жадная спичка; Это потребляет как можно больше.