У меня есть файл, в котором действительные 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, или я не могу адаптировать их к этому конкретному сценарию.
Что происходит, когда вы используете текущее регулярное выражение? Можете ли вы привести несколько примеров успешных/неудачных результатов? – octern
@octern: он всегда работает, но (1) Я не уверен, что он правильно разбирает первый шаблон («группа») (т. Е. Моя упрощенная интерпретация спецификации ISBN-10 может есть несколько цифр в первом шаблоне которые действительно принадлежат во втором), и (2) второй шаблон следует разделить на два («издатель» и «название»). – orome