[GastForen Programme Print/Bildbearbeitung Adobe InDesign Grep, Zeichenfolge ausschliesen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Grep, Zeichenfolge ausschliesen

Thaler
Beiträge gesamt: 139

13. Jul 2016, 09:17
Beitrag # 1 von 12
Bewertung:
(2384 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
ich möchte mit Grep einen Zeichenabfolge suchen, in der eine bestimmte Zeichenfolge ausgeschlossen wird. Beispiel:

<li>nicht anwendbar</li>
<li>< 3x105 Ohm</li>
<li>Wasser in frischem ...</li>

es sollen zwei aufeinanderfolgende < gefunden werden, innerhalb deren sich nicht die Zeichenfolge > befindet.

Ich habe es mit <.*?(?!>).*?< versucht, klappt aber nicht. Ich weiß, dass ist jetzt kein unmittelbares indesig-Problem, aber vielleicht erbarmt sich dennoch jemand und hilft mir weiter.

Gregor
gth
X

Grep, Zeichenfolge ausschliesen

Martin Fischer
  
Beiträge gesamt: 12452

13. Jul 2016, 09:55
Beitrag # 2 von 12
Beitrag ID: #551134
Bewertung:
(2360 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gregor,

nur zur Sicherheit:
Meinst Du tatsächlich die Zeichen
Code
<  
li>
/li>


Oder hat die Forensoftware hier Sonderzeichen anders umgesetzt.

Wenn Letzteres, kannst Du das Beispiel nochmals im Code-Tag eingebettet schicken?

Viele Grüße
Martin




als Antwort auf: [#551132]

Grep, Zeichenfolge ausschliesen

Kai Rübsamen
  
Beiträge gesamt: 4662

13. Jul 2016, 10:13
Beitrag # 3 von 12
Beitrag ID: #551135
Bewertung:
(2342 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Dein GREP findet in der zweiten Zeile nur bis zum ersten Vorkommen.

Mir ist jetzt nicht klar, ob diese Zeile überhaupt nicht gefunden oder ob auch hier das letzte Vorkommen gefunden werden soll?!

Wenn letzteres, dann sollte '(<).+\1' funktionieren.

Wenn die Aufgabe anders lautet, braucht es mehr Infos. Steht das erste Vorkommen immer am Absatzanfang? Kommt nach dem letzten Vorkommen immer ein "/" ?

Gruß Kai Rübsamen


als Antwort auf: [#551134]

Grep, Zeichenfolge ausschliesen

Thaler
Beiträge gesamt: 139

13. Jul 2016, 11:09
Beitrag # 4 von 12
Beitrag ID: #551136
Bewertung:
(2310 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin, hallo Kai,
es handelt sich nicht um ein Problem der Forensoftware.

Hintergrund: aus einer Datenbank wird xhtml exportiert. Diese DB löst zwingend alle "<" und ">" in Entities auf )-:

Aus
<li>nicht anwendbar</li>
<li>&lt; 3x105 Ohm</li>
<li>Wasser in frischem ...</li>
wird
&lt;li&gt;nicht anwendbar&lt;/li&gt;
&lt;li&gt;&lt; 3x105 Ohm&lt;/li&gt;
&lt;li&gt;Wasser in frischem ...&lt;/li&gt;

Diese exportierten Daten müssen mit xslt transformiert werden. Damit dies funtioniert, muss ich das "Kleiner"-Zeichen entschärfen. Es sollen zwei aufeinanderfolgende &lt; gefunden werden, innerhalb deren sich nicht die Zeichenfolge &gt; befindet.
Gregor
gth


als Antwort auf: [#551132]

Grep, Zeichenfolge ausschliesen

Kai Rübsamen
  
Beiträge gesamt: 4662

13. Jul 2016, 11:56
Beitrag # 5 von 12
Beitrag ID: #551138
Bewertung:
(2285 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Gregor, es ist offensichtlich schwierig ein Beispiel zu liefern, dass auch alle verstehen?!

Mir ist das mit der zweiten Zeile immer noch nicht klar. Mach bitte einen Screenshot von Ist und Soll. Danke.

edit: Wenn du einfach nur das entity wieder in "<" zurückwandeln willst, geht wahrscheinlich auch schon die Variante wie im beigefügten Screen. Wenn man noch mehr Zeichen ausschließen will, erweitert man einfach die Zeichenklassen, z.B. '(?<![;>])&lt;'

Gruß Kai Rübsamen


als Antwort auf: [#551136]
(Dieser Beitrag wurde von Kai Rübsamen am 13. Jul 2016, 12:06 geändert)

Anhang:
Bildschirmfoto 2016-07-13 um 12.02.31.png (53.6 KB)

Grep, Zeichenfolge ausschliesen

Thomas Richard
Beiträge gesamt: 18683

13. Jul 2016, 12:39
Beitrag # 6 von 12
Beitrag ID: #551140
Bewertung:
(2231 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich verstehe es so, dass einfach alleinstehende ;lt oder ;gt nicht gefunden werden sollen, aber solche um ein li oder /li herum schon.

Der Versuch, den kompletten Ausdruck der ursprünglich mit < > ausgezeichnet war, zu suchen, halte ich für problematisch. Ich würde mich nur auf die Suche nach den konkret ersetzten <li> und </li> machen, um sie eben wieder zu dem zu machen, was sie mal waren.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/


als Antwort auf: [#551138]

Grep, Zeichenfolge ausschliesen

Thaler
Beiträge gesamt: 139

13. Jul 2016, 13:33
Beitrag # 7 von 12
Beitrag ID: #551143
Bewertung:
(2197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
so sorry, dass ich mich unverständlich ausgedrückt habe.
Aus
&lt;li&gt;nicht anwendbar&lt;/li&gt;
&lt;li&gt;&lt; 3x105 Ohm&lt;/li&gt;
&lt;li&gt;Wasser in frischem ...&lt;/li&gt;

soll
&lt;li&gt;nicht anwendbar&lt;/li&gt;
&lt;li&gt;&amp;lt; 3x105 Ohm&lt;/li&gt;
&lt;li&gt;Wasser in frischem ...&lt;/li&gt;

werden

Noch eine Anmerkung: Im angeführten Beispiel handelt es sich ursprünglich um <li> Elemente. Es könnte sich aber auch um andere Elemente wie <p> handeln.

Das Problem ist das in xml im Text kein "<" vorkommen darf. Wenn ich alle "&lt;" in "<" umwandele, funktionierts nicht mit xslt. Also muss ich das "&lt;" im Text zu "&amp;lt;" entschärfen.

Gregor
gth


als Antwort auf: [#551138]

Grep, Zeichenfolge ausschliesen

Kai Rübsamen
  
Beiträge gesamt: 4662

13. Jul 2016, 13:50
Beitrag # 8 von 12
Beitrag ID: #551146
Bewertung:
(2188 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat es sollen zwei aufeinanderfolgende &lt; gefunden werden, innerhalb deren sich nicht die Zeichenfolge &gt; befindet.


Ich verstehe es so:
Suche &lt;, wenn sich direkt davor &gt; befindet?
Falls ja, funktioniert das: '&gt;\K(&lt;)'

Gruß Kai Rübsamen


als Antwort auf: [#551143]

Grep, Zeichenfolge ausschliesen

Thaler
Beiträge gesamt: 139

13. Jul 2016, 14:58
Beitrag # 9 von 12
Beitrag ID: #551151
Bewertung:
(2120 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

vor dem gesuchten "&lt;" kann sich noch eine beliebige Zeichenfolge befinden.

Es soll ein "&lt;" gefolgt von einer beliebige Zeichenfolge ausser "&gt;" gefolgt von einer beliebige Zeichenfolge und dann "&lt;" gefunden werden.

&gt; ... &lt; ...&lt;

Gregor
gth


als Antwort auf: [#551143]

Grep, Zeichenfolge ausschliesen

Kai Rübsamen
  
Beiträge gesamt: 4662

13. Jul 2016, 15:52
Beitrag # 10 von 12
Beitrag ID: #551152
Bewertung:
(2085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also, falls es jetzt das nicht ist, habe ich die Aufgabe immer noch nicht verstanden und gebe auf:

&lt;((?!&gt;).)+?&lt;

Gruß Kai Rübsamen


als Antwort auf: [#551151]

Grep, Zeichenfolge ausschliesen

Thaler
Beiträge gesamt: 139

13. Jul 2016, 15:58
Beitrag # 11 von 12
Beitrag ID: #551153
Bewertung:
(2072 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
genau das habe ich benötigt!
Vielen Dank für deine Mühe und verzeih, dass ich mich nicht klar ausgedrückt habe.

Gregor
gth


als Antwort auf: [#551152]

Grep, Zeichenfolge ausschliesen

Kai Rübsamen
  
Beiträge gesamt: 4662

13. Jul 2016, 16:26
Beitrag # 12 von 12
Beitrag ID: #551154
Bewertung: ||
(2051 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach, könnte man doch für sowas eine Rechnung schreiben … aber man macht es ja gerne ;-)

Man sieht es dem GREP nicht an, aber ich hab einen Moment dafür gebraucht, daher will ich es erklären:

Gregors Anforderung schreit eigentlich nach

&lt;[^&gt;]+&lt;

Das Problem ist jetzt aber, das nicht '&gt;' negiert wird, sondern '&,g,t,;'. Also jedes Zeichen einzeln.

&lt;[^(&gt;)]+&lt;

Das funktioniert ebenfalls nicht, weil die runden Klammern innerhalb der eckigen ihre Bedeutung verlieren und daher wie literale Zeichen behandelt werden.

Lösung: &lt;((?!&gt;).)+?&lt;

Ein Lookahead kann entweder vor oder nach dem Suchausdruck stehen. Steht er davor, kann ich den Ausdruck 2x durchsuchen. Wichtig sind hier die runden Klammern! Durch den Punkt als beliebiges Zeichen wird quasi bei jedem Zeichen geprüft, ob links davon kein '&gt;' steht.

Gruß Kai Rübsamen


als Antwort auf: [#551153]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
05.03.2021 - 30.04.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 05. März 2021, 13.00 Uhr - Freitag, 30. Apr. 2021, 17.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen.

Preis: CHF 3'250.–
Dauer: 8.5 Tage - Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PWEB