что означает «слишком короткая многобайтовая строка кода в регулярном выражении»?

Я создаю возвышенный файл выделения текста. Однако я застрял с ошибкой, которую не совсем понимаю. У меня есть следующее регулярное выражение:

\x([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])

Когда я пытаюсь загрузить файл в возвышенном тексте, я получаю сообщение об ошибке:

Ошибка в регулярном выражении: слишком короткая многобайтовая строка кода в регулярном выражении \x([0-9]|[A-F]|[a-f])([0-9]|[A-F]|[a-f])

Я попытался погуглить, чтобы понять, что означает эта ошибка, единственное, что я нашел, это следующие ссылки:

0. выпуск проекта rubinius на github

1. поток переполнения стека

2. тема на реддите

К сожалению, по этим ссылкам я смог только определить, что эта ошибка, вероятно, вызвана кодировкой символов [из 1 и 2]. Теперь я подозреваю, что проблема может заключаться в "\x", так как все остальное в этом регулярном выражении в порядке. Как избежать этого символа и всех ему подобных, в частности, можно ли использовать скрипт golang для очистки регулярных выражений, чтобы избавиться от таких проблем?


person Adeeb    schedule 05.01.2015    source источник
comment
просто по умолчанию используются обратные кавычки (`) для регулярных выражений. Таким образом, вам не нужно беспокоиться об экранировании символов, когда вы что-то меняете.   -  person JimB    schedule 05.01.2015


Ответы (1)


Это означает, что вы забыли экранировать \ в \x.
Таким образом, он пытается разобрать escape-символ Unicode в форме \x1234 и не находит достаточного количества чисел.

person SLaks    schedule 05.01.2015