2012-03-27 8 views
0

Ich habe eine Datei, in der gültigen ISBN-Nummern erscheinen immer fehlt im Zusammenhang mitStriche in ISBN-Nummern einfügen grep (in BBEdit)

isbn = {<ISBN>} 

aber oft die Bindestrichen, die für die Formatierung von ihnen im allgemeinen verwendet werden. Ich möchte einfügen diese Bindestriche mit Grep in BBEdit. Zum Beispiel würde Ich mag

isbn = {0226104036} 

mit

isbn = {0-226-10403-6} 

aber ersetzen, um dies zu tun, muss ich die Ziffernfolge brechen, das Wissen und grep ISBN Codierung Fähigkeiten erfordert I don‘ t ziemlich haben.

ich so weit wie für die Suche

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)} 

und ersetzen mit

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

, die in dem obigen Beispiel, mir nur so weit kommt wie, aber das ist so weit wie

isbn = {0-22610403-6} 

und vielleicht sogar den ersten Bindestrich an die falsche Stelle setzen.

Beachten Sie, dass ich davon ausgehen kann, dass die ISBN alle ISBN-10 sind. Beachten Sie auch, dass ich dies in BBEdit tun, die einige grep syntax quirks hat. Die related solutions, die ich hier gefunden habe, scheitern entweder in BBEdit, oder ich kann sie nicht an dieses spezielle Szenario anpassen.

+0

Was passiert, wenn Sie Ihre aktuelle Regex verwenden? Können Sie einige Beispiele für erfolgreiche/nicht erfolgreiche Ergebnisse nennen? – octern

+0

@octern: Es funktioniert immer, aber (1) Ich bin mir nicht sicher, ob es das erste Muster (die "Gruppe") korrekt ausparst (dh meine vereinfachte Interpretation der ISBN-10-Spezifikation mag einige Ziffern im ersten Muster essen) die wirklich in die zweite gehören) und (2) das zweite Muster sollte in zwei geteilt werden (der "Verlag" und "Titel"). – orome

Antwort

0

Eine Sache, die ich sehe, ist, dass {und} Sonderzeichen in Regex sind, also müssen Sie sie entfliehen (setzen Sie einen Backslash vor dem Zeichen). Dies gilt nur für den Text in der Suche, nicht in Ersetzen. Dies ist möglicherweise nicht die alleinige Ursache für Ihr Problem, aber es ist wahrscheinlich notwendig.

Haben Sie auch eine Internetsuche nach "regulären ISBN-Ausdrücken" versucht? Für gängige Muster wie diese gibt es in der Regel bereits eine bekannte und validierte Lösung. Here's one that might help. Ich habe nicht das Wissen, es selbst zu überprüfen, aber wenn das nicht funktioniert, gibt es viele andere vorgeschlagene Lösungen da draußen.

+0

Die Muster, die ich oben habe, funktionieren in BBEdit. Ich bin mir der Ressource bewusst, die Sie verlinkt haben (in der Frage, die ich erwähnt habe). Das ist, was ich nicht BBEdit nannte, es ist auch komplexer als ich es brauche und ich bin mir nicht sicher, wie ich es anpassen soll nimmt einen anderen Kontext an, z. B. 10 oder 13 ISBNs, und ein Präfix einer bestimmten Form, das sich von dem anderen unterscheidet. – orome

+0

Dann scheiterte ich völlig am Leseverstehen. Tut mir leid, dass: P – octern