{"id":110,"date":"2013-02-20T21:45:35","date_gmt":"2013-02-20T20:45:35","guid":{"rendered":"http:\/\/paulchrablass.de\/blog\/?p=110"},"modified":"2013-04-14T17:34:33","modified_gmt":"2013-04-14T15:34:33","slug":"suchen-und-ersetzen-mit-regulaeren-ausdruecken-in-geany","status":"publish","type":"post","link":"https:\/\/paulchr.ablass.me\/blog\/2013\/02\/20\/suchen-und-ersetzen-mit-regulaeren-ausdruecken-in-geany\/","title":{"rendered":"Suchen und Ersetzen mit regul\u00e4ren Ausdr\u00fccken in Geany"},"content":{"rendered":"<p>Beim Editieren eines Html-Dokuments stie\u00df ich k\u00fcrzlich auf eine kleine <em>Unannehmlichkeit<\/em>: Innerhalb eines <code>&lt;a href=\"#\" class=\"chief\"&gt;[TEXT]&lt;\/a&gt;<\/code>-Elements sollten vor dem schlie\u00dfenden Tag noch zus\u00e4tzliche Inhalte eingef\u00fcgt werden. Prinzipiell nicht weiter wild, aber dieses Konstrukt kam \u00fcber 30 Mal im Dokument vor und der Anker-Text \u00e4nderte sich pro Element. Mit einem einfachen Suchen und Ersetzen kam ich also nicht weit, da die Anker-Elemente durch den wechselnden Text einzigartig waren. Und alle Elemente manuell ersetzen kam nicht in Frage. Was also tun? Die Antwort hie\u00df <a href=\"http:\/\/de.wikipedia.org\/wiki\/Regul%C3%A4rer_Ausdruck\">regul\u00e4re Ausdr\u00fccke<\/a>. Die <abbr title=\"integrated development environment\">IDE<\/abbr> meiner Wahl, <a href=\"http:\/\/geany.org\/\">Geany<\/a>, erlaubt im Suchen-und-Ersetzen-Dialog die Verwendung der Option &#8222;regul\u00e4re Ausdr\u00fccke&#8220;, daher probierte ich ein wenig herum, fragte Kollegen und kam schlie\u00dflich durch die Hilfe von <a href=\"http:\/\/www.david-herminghaus.de\/\">David<\/a> auf folgendes:<\/p>\n<h4>Suchmuster<\/h4>\n<pre><code>(&lt;a href=\"#\" class=\"chief\"&gt;)([^&lt;]+)(&lt;\/a&gt;)<\/code><\/pre>\n<h4>Ersetzungsmuster<\/h4>\n<pre><code>\\1\\2 &lt;i class=\"icon link\" aria-hidden=\"true\"&gt;&lt;\/i&gt;\\3<\/code><\/pre>\n<p>Vereinfacht gesagt sucht Geany also nach allen <code>a<\/code>-Elementen mit der Klasse <code>chief<\/code> und setzt vor dem schlie\u00dfenden Tag <code>&lt;i class=\"icon link\" aria-hidden=\"true\"&gt;&lt;\/i&gt;<\/code> ein.<\/p>\n<p>Funktionierte tadellos und wird sicherlich noch \u00f6fter genutzt werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Editieren eines Html-Dokuments stie\u00df ich k\u00fcrzlich auf eine kleine Unannehmlichkeit: Innerhalb eines &lt;a href=&#8220;#&#8220; class=&#8220;chief&#8220;&gt;[TEXT]&lt;\/a&gt;-Elements sollten vor dem schlie\u00dfenden Tag noch zus\u00e4tzliche Inhalte eingef\u00fcgt werden. Prinzipiell nicht weiter wild, aber dieses Konstrukt kam \u00fcber 30 Mal im Dokument vor und der Anker-Text \u00e4nderte sich pro Element. Mit einem einfachen Suchen und Ersetzen kam ich [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[75],"tags":[26,27,30],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2Vohc-1M","jetpack-related-posts":[{"id":637,"url":"https:\/\/paulchr.ablass.me\/blog\/2014\/05\/29\/ordneruebergreifendes-suchen-und-ersetzen-in-der-bash\/","url_meta":{"origin":110,"position":0},"title":"Ordner\u00fcbergreifendes Suchen und Ersetzen in der Bash","author":"Paul-Christian Abla\u00df","date":"29. Mai 2014","format":false,"excerpt":"Wer kennt es nicht: In einer gr\u00f6\u00dferen Anzahl von Dateien in verschiedenen Unterordnern soll ein bestimmtes Wort\/ eine Wortgruppe ausgetauscht werden. Prinzipiell eine eher unsch\u00f6ne Situation, die leicht in Arbeit ausarten kann- und das kann ja nun wirklich niemand wollen. Doch halt, Rettung ist in Sicht: In der Bash geht\u2026","rel":"","context":"In &quot;Bash&quot;","block_context":{"text":"Bash","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/bash\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":700,"url":"https:\/\/paulchr.ablass.me\/blog\/2014\/07\/17\/schrift-metadaten-mit-ttxfonttools-bearbeiten\/","url_meta":{"origin":110,"position":1},"title":"Schrift-Metadaten mit TTX\/FontTools bearbeiten","author":"Paul-Christian Abla\u00df","date":"17. Juli 2014","format":false,"excerpt":"Nach der Installation von TTX\/FontTools folgt nun ein Beitrag zur Nutzung. Erzeugen der XML-.ttx-Datei TTX\/FontTools ist ein Kommandozeilentool, daher wird es ausschlie\u00dflich mit dem Terminal bedient und hat kein GUI. Das macht aber \u00fcberhaupt nichts, denn die Nutzung ist denkbar simpel: Mit $ ttx \/User\/paul.ablass\/Desktop\/SWBTH___.TTF wird der Befehl gegeben, die\u2026","rel":"","context":"In &quot;Tools&quot;","block_context":{"text":"Tools","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/tools\/"},"img":{"alt_text":"TTX\/FontTools in Aktion","src":"https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2014\/07\/ttx.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2014\/07\/ttx.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2014\/07\/ttx.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2014\/07\/ttx.png?resize=700%2C400 2x"},"classes":[]},{"id":626,"url":"https:\/\/paulchr.ablass.me\/blog\/2014\/05\/07\/tool-html5-pattern\/","url_meta":{"origin":110,"position":2},"title":"Tool: Html5 Pattern","author":"Paul-Christian Abla\u00df","date":"7. Mai 2014","format":false,"excerpt":"Auf Html5Pattern gibt es diverse regul\u00e4re Ausdr\u00fccke f\u00fcr das Pattern-Attribut zur Kontrolle der User-Eingaben in input-Elementen. Danke, Andreas!","rel":"","context":"In &quot;Tools&quot;","block_context":{"text":"Tools","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/tools\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":286,"url":"https:\/\/paulchr.ablass.me\/blog\/2013\/05\/05\/img-elemente-mit-inset-box-shadow-stylen-ein-workaround\/","url_meta":{"origin":110,"position":3},"title":"img-Elemente mit inset box-shadow stylen- ein Workaround","author":"Paul-Christian Abla\u00df","date":"5. Mai 2013","format":false,"excerpt":"[Editors Note: Es gibt eine Demo box-shadow inset f\u00fcr img-Elemente] In einem Design, dass ich vor kurzem umsetzen musste, gab es jede Menge Bilder die einen nach innen liegenden Schlagschatten aufwiesen. Einfache Sache, dachte ich mir: Dem img-Element einfach einen box-shadow mit der Eigenschaft inset zuweisen\u2013 et voil\u00e0, die Sache\u2026","rel":"","context":"In &quot;Css&quot;","block_context":{"text":"Css","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/css\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":451,"url":"https:\/\/paulchr.ablass.me\/blog\/2013\/09\/28\/os-x-10-8-4-firefox-24-und-die-scrollbars-in-der-responsive-design-view\/","url_meta":{"origin":110,"position":4},"title":"OS X 10.8.4, Firefox 24 und die Scrollbars in der Responsive Design View","author":"Paul-Christian Abla\u00df","date":"28. September 2013","format":false,"excerpt":"Als ich am vergangenen Dienstag den frisch auf Version 24 aktualisierten Firefox benutze und mich daran machte, mein aktuelles Projekt in der Responsive Design View zu bearbeiten, wunderte ich mich etwas: Zuvor nebeneinander flie\u00dfende Elemente brachen mit einem Mal um. Beim Blick in das Layout-Fenster vom Firebug fiel mir auf,\u2026","rel":"","context":"In &quot;Browser&quot;","block_context":{"text":"Browser","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/browser\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2013\/09\/macosx-scrollbar-settings.png?fit=668%2C534&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2013\/09\/macosx-scrollbar-settings.png?fit=668%2C534&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/paulchr.ablass.me\/blog\/wp-content\/uploads\/2013\/09\/macosx-scrollbar-settings.png?fit=668%2C534&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":584,"url":"https:\/\/paulchr.ablass.me\/blog\/2014\/03\/20\/lesetipp-ein-zwischenstand-zu-responsive-images\/","url_meta":{"origin":110,"position":5},"title":"Lesetipp: Ein Zwischenstand zu responsive images","author":"Paul-Christian Abla\u00df","date":"20. M\u00e4rz 2014","format":false,"excerpt":"A Q&A on the Picture Element ist ein guter Ausgangspunkt, um sich auf den aktuellen Stand der Entwicklung bei responsives images zu bringen. Zum einen wird ein kurzer Abriss des bisherigen Entwicklungsprozesses gegeben und zum anderen bietet der Artikel genug Links und Schlagworte f\u00fcr eine vertiefende Recherche. Die momentan\u2122 angestrebte\u2026","rel":"","context":"In &quot;Css&quot;","block_context":{"text":"Css","link":"https:\/\/paulchr.ablass.me\/blog\/themen\/css\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/posts\/110"}],"collection":[{"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":12,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":244,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/posts\/110\/revisions\/244"}],"wp:attachment":[{"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paulchr.ablass.me\/blog\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}