我在其中有效的ISBN總是出現在插入用grep中的ISBN破折號(在BBEdit中)
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}
甚至可能在某些情況下將第一個破折號放在錯誤的地方。
請注意,我可以假設ISBNs都是ISBN-10。另外請注意,我在BBEdit中做了這個,它有一些grep syntax quirks。我在這裏找到的related solutions要麼在BBEdit中失敗,要麼我無法使它們適應這種特殊情況。
當你使用你當前的正則表達式會發生什麼?你能舉出一些成功/不成功的例子嗎? – octern 2012-03-27 21:04:53
@octern:它總是有效,但是(1)我不確定它是否正確地解析出第一個模式(「組」)(即我對ISBN-10規範的簡單解釋可能是以第一種模式吃掉一些數字(2)第二種模式應該分爲兩種(「發佈者」和「標題」)。 – orome 2012-03-27 21:21:36