Плохое регулярное выражение: неверный конец диапазона

Лучшим решением был mutool, см. выше:

sudo apt install mupdf-tools pdftk

раскол:

mutool poster -y 2 input.pdf output.pdf

но тогда нужно перевернуть страницы влево:

pdftk output.pdf cat 1-endleft output rotated.pdf
0
17.01.2020, 11:31
2 ответа

Вставка этого вhttps://regexr.com/помогает улучшить отладку.

Вы не экранировали -в диапазоне, так как -используется для указания диапазона.

Старый:

cdrom:\[[a-zA-Z0-9\._-\(\) ]+\]/

Исправление:

cdrom:\[[a-zA-Z0-9\._\-\(\) ]+\]/
0
28.01.2020, 02:29

Вероятно, проблема заключается в размещении знака -в вашем списке персонажей.

Вы уже использовали тот факт, что диапазоны символов могут быть выражены с помощью [start-end], например, [a-z]является сокращением для [abcdefghijkl...xyz](, хотя см. предостережение ниже ). Это означает, что -является специальным символом, и если он встречается между двумя «обычными» символами, он интерпретируется как указание на еще один диапазон, охватывающий эти два символа и все символы между ними.

Конечно, это работает только в том случае, если символ после -лексикографически «позже» в порядке сортировки, чем предшествующий ему символ, что также является причиной вашего сообщения об ошибке (, вы увидите, что он идет если вместо этого вы скажете (-_, хотя это не решит вашу проблему).

Поскольку вы, очевидно, хотите сопоставить литерал -и в зависимости от того, как интерпретируются регулярные выражения в .nanorc, вы либо

  • должны избежать его (, то есть \-), или
  • поместите его первым или последним в списке символов (, т. е. [-etc]или [etc-]), что было бы стандартом в регулярных выражениях POSIX и GNU и, следовательно, наиболее вероятным решением в системе Linux .

См., например,. здесь для дальнейшего использования.

Предупреждение:Утверждение выше «[a-z]является сокращением для [abcdefghijkl...xyz]не безусловно верно ! То, как интерпретируется диапазон, зависит от настроек локали, в частности от порядка сопоставления.

  • В локали "C" порядок соответствует кодовому значению ASCII, то есть ABC...XYZ...abc...xyz. Здесь [a-z]на самом деле означает «все символы нижнего регистра».
  • В большинстве других локалей символы верхнего -и нижнего -регистра -группируются вместе, то есть порядок aAbBcC...xXyYzZ. Здесь [a-z]будет означать «все символы нижнего регистра и все символы верхнего регистра, кроме Z.
  • Обработка символов, отличных от -ASCII, таких как "умлауты", является еще одной проблемой.

См. здесь и здесь для дальнейшего обсуждения предмета.

3
28.01.2020, 02:29

Теги

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