Вставка тире в ISBN с использованием grep (в BBEdit) - PullRequest
0 голосов
/ 28 марта 2012

У меня есть файл, в котором действительные номера ISBN всегда появляются в контексте

isbn = {<ISBN>}

, но часто не имеют тире , которые обычно используются для их форматирования.Я хотел бы вставить эти черточки , используя grep в BBEdit.Например, я хотел бы заменить

isbn = {0226104036}

на

isbn = {0-226-10403-6}

, но для этого мне нужно разбить строку цифр, что требует знания кодировки ISBN и grepнавыки, которых у меня совсем нет.

Я дошел до поиска

isbn = {([0-5]|7|60[0-9]|61[0-7]|8[0-9]|9[1-4]|9[5-8][0-9]|992[7-9]|99[3-8][0-9]|9990[1-9]|999[1-5][1-9]|9996[1-7])([0-9]+)([0-9]|X)}

и заменил на

isbn = {\1-\2-\3}

, который в приведенном выше примере толькодоводит меня до

isbn = {0-22610403-6}

и в некоторых случаях может даже поставить первую черту в неправильном месте.

Обратите внимание, что я могу предположить, что все ISBN - это ISBN-10.Также обратите внимание, что я делаю это в BBEdit, который имеет некоторые синтаксические особенности grep . связанные решения , которые я здесь нашел, либо не работают в BBEdit, либо я не могу адаптировать их к этому конкретному сценарию.

1 Ответ

0 голосов
/ 28 марта 2012

Сразу вижу, что {и} являются специальными символами в регулярном выражении, поэтому вам нужно их избегать (ставьте обратную косую черту перед символом).Это относится только к тексту в поиске, а не в замене.Возможно, это не единственная причина вашей проблемы, но, вероятно, это необходимо.

Кроме того, вы пытались найти в Интернете "регулярные выражения ISBN"?Для таких распространенных шаблонов, как правило, уже есть известное и проверенное решение. Вот тот, который может помочь .У меня нет знаний, чтобы проверить это самостоятельно, но если это не сработает, есть много других предлагаемых решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...