В главе "Расширенное регулярное выражение" в Освоение Perl, у меня есть разбитый пример, для которого я не могу найти хорошее исправление, Пример, возможно, пытается быть слишком умным для собственного блага, но, возможно, кто-то может исправить это для меня. В нем может быть свободная копия книги для исправления работы.:)
В разделе, посвященном поисковым запросам, я хотел использовать отрицательный lookbehind для реализации компиляции для чисел с дробными частями. Дело было в том, чтобы использовать негативный взгляд, потому что это была тема.
Я тупо сделал это:
$_ = '$1234.5678';
s/(?<!\.\d)(?<=\d)(?=(?:\d\d\d)+\b)/,/g; # $1,234.5678
(?<!\.\d)
утверждает, что бит перед (?=(?:\d\d\d)+\b)
не является десятичной точкой и цифрой.
Глупое дело не слишком усложняется, чтобы сломать его. Добавляя еще одну цифру в конец, теперь существует группа из трех цифр, которой не предшествует десятичная точка и цифра:
$_ = '$1234.56789';
s/(?<!\.\d)(?<=\d)(?=(?:\d\d\d)+\b)/,/g; # $1,234.56,789
Если lookbehinds может быть переменной шириной в Perl, это было бы очень просто. Но они не могут.
Обратите внимание, что это легко сделать без отрицательного lookbehind, но это не точка примера. Есть ли способ спасти этот пример?