2012-03-27 2 views
0

У меня есть файл, в котором действительные ISBNs всегда появляются в контекстеВставка тире в ISBNs, используя Grep (в BBEdit)

isbn = {<ISBN>} 

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

isbn = {0226104036} 

с

isbn = {0-226-10403-6} 

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

я, насколько поиски

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 syntax quirks. related solutions Я обнаружил, что здесь или нет в BBEdit, или я не могу адаптировать их к этому конкретному сценарию.

+0

Что происходит, когда вы используете текущее регулярное выражение? Можете ли вы привести несколько примеров успешных/неудачных результатов? – octern

+0

@octern: он всегда работает, но (1) Я не уверен, что он правильно разбирает первый шаблон («группа») (т. Е. Моя упрощенная интерпретация спецификации ISBN-10 может есть несколько цифр в первом шаблоне которые действительно принадлежат во втором), и (2) второй шаблон следует разделить на два («издатель» и «название»). – orome

ответ

0

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

Кроме того, вы пробовали веб-поиск по «регулярным выражениям ISBN»? Для обычных шаблонов, как это, обычно существует известное и проверенное решение. Here's one that might help. У меня нет знаний, чтобы проверить это самостоятельно, но если это не сработает, есть много других предлагаемых решений.

+0

Узоры, которые у меня выше, работают в BBEdit. Я знаю о ресурсе, который вы связали (он связан в вопросе, о котором я упоминал), вот что я имел в виду как не работающий в BBEdit, он также более сложный, чем мне нужно, и я не уверен, как его адаптировать (он предполагает другой контекст, например 10 или 13 ISBN, и префикс конкретной формы, отличный от той, которая у меня есть). – orome

+0

Тогда я полностью потерпел неудачу при чтении понимания. Извините за это: P – octern