hilfdirselbst.ch
Facebook Twitter gamper-media

**********************************************
        Facelifting HDS: Danke für deine Unterstützung!

**********************************************

Guzzi-Birgit
Beiträge: 70
12. Mai 2017, 11:00
Beitrag #1 von 9
Bewertung:
(2527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo liebe HDSler,
ich arbeite seit kurzem mit einer Grepsammlung, die über ein Script ausgeführt wird. Diese Steuerdatei sollte modifiziert werden, um bei Abkürzungen (z.B., u.A., s.o., o.ä.) das Leerzeichen zu entfernen (falls vorhanden) und im nächsten Schritt ein Achtelgeviert einzufügen.

Code
// 
grep {findWhat:"\\<(?i)(e|o|u|s|z)\.\\x{0020}\\<(?i)(a|ä|b|o|u|t|v)\."} {changeTo:"$1\.~<$2\."} {includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}
Löscht Leerzeichen bei e.V., z.B., u.a., z.T. s.o., s.u., o.ä.
//
grep {findWhat:"\\<(?i)(e|o|u|s|z)\.\\<(?i)(a|ä|b|o|u|t|v)\."} {changeTo:"$1\.~<$2\."} {includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true}
Fügt bei e. V., z.B., u.a., z.T. s.o., s.u., o.ä. ein Achtelgeviert ein.


So weit so gut. Leider greift Grep jetzt auch bei Satzanfängen (Um Antwort...), interessanter Weise nur bei Wörtern mit zwei Buchstaben.

Ich steh total auf dem Schlauch. Kann mir jemand auf die Sprünge helfen, wo der Fehler liegt?

Sonnige Grüße
Birgit

MAC OS X El Capitan 10.11.6
AdobeCreativeCloud CC2017 Top
 
X
Ralf Hobirk S
Beiträge: 5754
12. Mai 2017, 11:18
Beitrag #2 von 9
Beitrag ID: #557403
Bewertung:
(2524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Brirgit,

bei GREP in Javascript muss immer doppelt escaped werden.

Code
\. 

findet ein beliebiges Zeichen.
Um den Punkt zu erwischen, muss es so aussehen:
Code
\\. 


---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
als Antwort auf: [#557402] Top
 
Guzzi-Birgit
Beiträge: 70
12. Mai 2017, 11:27
Beitrag #3 von 9
Beitrag ID: #557404
Bewertung:
(2515 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Ralf,

ach Mensch, das war ja einfach . . . wenn man es weiß :-)
Klappt einwandfrei, vielen Dank!!!
Viele Grüße
Birgit

MAC OS X El Capitan 10.11.6
AdobeCreativeCloud CC2017
als Antwort auf: [#557403] Top
 
funkturmmitte
Beiträge: 96
15. Mai 2017, 15:33
Beitrag #4 von 9
Beitrag ID: #557441
Bewertung:
(2303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hat es einen bestimmten Grund, dass das Achtelgeviert nicht schon im ersten Schritt eingefügt wird?

Z.B. So:

Code
grep	{findWhat:"\\<(?i)(e|o|u|s|z)\\.\\x{0020}?\\<(?i)(a|ä|b|o|u|t|v)\."}	{changeTo:"$1\\.~<$2\\."} 


Gruß
Oliver
als Antwort auf: [#557402] Top
 
Guzzi-Birgit
Beiträge: 70
16. Mai 2017, 09:32
Beitrag #5 von 9
Beitrag ID: #557455
Bewertung:
(2241 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hi Oliver,

ja, da hab ich mir was bei gedacht. So wie es jetzt ist, also in zwei Durchgängen, »erwische« ich auch die, bei denen die Abkürzungen von vorneherein ganz ohne Leerzeichen geschrieben sind. Das wäre ja anders nicht der Fall.
Viele Grüße
Birgit

MAC OS X El Capitan 10.11.6
AdobeCreativeCloud CC2017
als Antwort auf: [#557441] Top
 
funkturmmitte
Beiträge: 96
16. Mai 2017, 09:59
Beitrag #6 von 9
Beitrag ID: #557459
Bewertung:
(2234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Birgit!
In deiner Grep-Suche kommt diese Formulierung vor:
Code
\\x{0020}? 

Das ist ein Leerzeichen, welches vorkommen kann oder auch nicht.
Also wird mit der Suche sowohl z.B. als auch z. B. gefunden - allerdings nur, wenn das Standard Leerzeichen genutzt wird.
Wenn du alle möglichen Leerzeichen abdecken willst müsstest Du statt \\x{0020}? \\p{space_separator}? nutzen.

Gruß
Oliver
als Antwort auf: [#557455] Top
 
Kai Rübsamen  M  p
Beiträge: 4483
16. Mai 2017, 10:01
Beitrag #7 von 9
Beitrag ID: #557460
Bewertung:
(2234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Birgit,

das lässt sich auch in einem Durchgang erledigen und dann auch noch ein bisschen eleganter schreiben:

(?i)(\b[eousz]\.)\x20?([aäboutv]\.)

(?i) funktioniert wie ein Schalter. Es reicht also, wenn er 1x gesetzt wird.

\b ob \b oder \< ist egal, \b funktioniert aber vorne u. hinten und ist zumindest für mich vom Zeichen her etwas eindeutiger.

[eousz] Es ist nicht egal, ob du [eousz] oder (e|o|u|s|z) suchst. Im ersten Fall wird nur 1x gesucht um das "z" zu finden, im letzten Fall braucht es 5 Suchläufe. Zeichenklassen sind daher in solchen Fällen immer performanter als Alternationen.

\x20? Du suchst ein Leerzeichen, das da sein kann oder auch nicht. \x20 ist dabei die Kurzschreibweise von \x{0020}. Weil du das Leerzeichen u.U. rauswerfen willst, braucht es vorher und nachher runde Klammern, die dann mit $1 und $2 referenziert werden.

Edit: Ich sehe gerade, Oliver hat in der Zwischenzeit auch etwas geschrieben. @Oliver: Schau dir mal Birgits Beispiel genauer an. Da ist kein "?" hinter dem Leerzeichen. Das hast du wohl autom. gesetzt und daher benötigt sie zwei Durchläufe.

Gruß Kai Rübsamen
_______________________
als Antwort auf: [#557455]
(Dieser Beitrag wurde von Kai Rübsamen am 16. Mai 2017, 10:04 geändert)
Top
 
Guzzi-Birgit
Beiträge: 70
16. Mai 2017, 10:23
Beitrag #8 von 9
Beitrag ID: #557461
Bewertung:
(2221 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Kai, hallo Oliver,

vielen Dank für eure Tipps, im Moment bin ich schon froh, dass es (so wie es ist) einwandfrei und sehr zügig funktioniert.

Aber ihr habt natürlich recht, das lässt sich bestimmt noch verbessern . . . ich übe noch :-)

Ich werde mich da nochmal ran setzen, wenn ich ein bisschen freie Zeit habe.
Viele Grüße
Birgit

MAC OS X El Capitan 10.11.6
AdobeCreativeCloud CC2017
als Antwort auf: [#557460] Top
 
Hans Haesler  M  p
Beiträge: 5580
17. Mai 2017, 21:08
Beitrag #9 von 9
Beitrag ID: #557506
Bewertung:
(2119 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Problem mit Grep über Script - Abkürzungen


Hallo Oliver,

hast Du Deinen Vorschlag im Beitrag #4 ausprobiert?

Bei mir ist das Ergebnis:

Zitat e\. V\., z\. B\., u\. a\., z\. T\. s\. o\., s\. u\., o\. ä\.

Im Ersetzen-Muster muss der Punkt nicht escaped werden.

Falls dennoch: Wenn einfach (= \.), dann passiert zwar nichts. Aber wenn doppelt (= \\.), wird ein Backslash eingefügt.

Gruss, Hans
als Antwort auf: [#557441] Top
 
X