-1

我有一个文件,其中有效的 ISBN 始终出现在

isbn = {<ISBN>}

通常缺少通常用于格式化它们的破折号。我想在 BBEdit 中使用 grep插入这些破折号。例如我想更换

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 中失败,要么我无法使它们适应这种特定情况。

4

1 回答 1

-1

我马上看到的一件事是 { 和 } 是正则表达式中的特殊字符,因此您需要对它们进行转义(在字符前放一个反斜杠)。这仅适用于搜索中的文本,而不适用于替换中的文本。这可能不是您的问题的唯一原因,但它可能是必要的。

另外,您是否尝试过网络搜索“ISBN 正则表达式”?对于像这样的常见模式,通常已经有一个已知且经过验证的解决方案。这是一个可能有帮助的。我没有自己检查的知识,但如果这不起作用,还有很多其他建议的解决方案。

于 2012-03-27T21:06:08.977 回答