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.
Was passiert, wenn Sie Ihre aktuelle Regex verwenden? Können Sie einige Beispiele für erfolgreiche/nicht erfolgreiche Ergebnisse nennen? – octern
@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