Eckige Klammern enthalten alle Zeichen im Zeichensatz angezeigt werden soll. Nicht sicher, wenn der Fall eines Zeichen, Zeichensatz nützlich sein kann ➜ Charpter20 git: ( master) ✗ echo "Yes" | sed -n '/[Yy]es/p' Yes ➜ Charpter20 git: ( master) ✗ echo "yes" | sed -n '/[Yy]es/p' yes Negierte Zeichensatz In regulären Ausdrücken Sie die Rolle des Zeichensatzes rückgängig machen können, kann man nicht den Zeichensatz finden. ➜ Charpter20 git: ( master) ✗ more data6 This is a test of a line. The cat is sleeping. Shell regular ausdruck . That is a very nice hat. This test is at line four. at ten o 'clock we' ll go home.
sh4711 Anmeldungsdatum: 13. Februar 2011 Beiträge: 507 19. September 2011 19:22 Hallo ich möchte in dem folgenden Text die: und? markieren, welche hinter dem letzten / stehen. Text:. /y: 19? 88/zz: 1? 99 Ziel ist es die Zeichen wie folgt zu markieren (hier durch _ dargestellt):. /y: 19? 88/zz_ 1_99 Zum testen habe ich benutzt. Markieren der: und? mit [:? ] habe ich mir gedacht. Der Text nach dem letzten / sollte wie folgt ausgegeben werden: [^/]+$ Aber wie mische ich das nun zusammen? Wie kann ich bei [^/]+$ vermerken, das nur [:? ] "markiert" werden? Vielen Dank schon mal für die Hilfe. Gruß superhonk Kuehly Anmeldungsdatum: 15. Rheinwerk Computing :: Shell-Programmierung – 11 Reguläre Ausdrücke und grep. Oktober 2006 Beiträge: 282 19. September 2011 22:19 Hi superhonk, ich habe mal ein bisschen rumprobiert. Ich glaube das ist, was du willst: [:? ](? =[^/]+$) Laut der Beschreibung ist (? =ABC) eine Gruppe, die hinter dem eigentlichen Ausdruck steht, aber nicht im Ergebnis auftaucht. Gruß, Jan track Anmeldungsdatum: 26. Juni 2008 Beiträge: 7174 Wohnort: Wolfen (S-A) 20. September 2011 00:05 (zuletzt bearbeitet: 20. September 2011 00:06) Erstmal sind mir 2 Sachen nicht klar: Welche Sprache willst Du benutzen?
Im obigen Beispiel wird aus "2. 0" ein "3. 0". Oft möchte man einen Abschnitt, auf den ein regulärer Ausdruck zutrifft, nicht einfach durch eine feste Zeichenkette ersetzen, sondern dort Teile des ursprünglichen Textes wiederverwenden. In der Regel muss man zu diesem Zweck die Rückwärtsreferenzen mit Hilfe von Gruppierungen in den Variablen $1, $2, etc. einfangen. Bestimmte Werte, etwa $& (gesamter String, auf den das Muster zugetroffen hat), sind jedoch automatisch vorhanden. Wenn man zum Beispiel in der hosts-Datei bei allen IP-Adressen, die mit 192. 168. beginnen, das 3. Oktett durch den Wert "99" ersetzen möchte, dann kann man dies so tun: $IPs = Get-Content -Path C:\Windows\system32\drivers\etc\hosts $IPs -replace "192\. 168\. Shell reguläre ausdrücke generator. \d{1, 3}\. (\d{1, 3})", '192. 99. $1' Das Teilmuster, das auf das letzte Oktett der IP-Adresse zutrifft, steht als einziges in runden Klammern. Daher lässt es sich über $1 ansprechen und in die neue IP-Adresse übernehmen. Bei der Formulierung eines solchen Befehls ist daran zu denken, dass der Ersetzungstext in einfachen Anführungszeichen stehen sollte, weil PowerShell die Variablen in doppelten Anführungszeichen schon expandiert, bevor sie an die RegEx-Engine übergeben werden.
Ganz besondere Möglichkeiten tun sich dadurch auf, dass man Markierungen innerhalb eines Ausdrucks setzen kann und diese beim Ersetzen verwenden kann. Ein praktisches Beispiel findet sich beim Umsetzen von TeX-Dokumenten nach HTML. In der ersten Zeile sehen Sie eine Überschrift in TeX und darunter eine in HTML. \section{Dies ist ein spannendes Kapitel}
Dieser Ausdruck ist also dann erfüllt, wenn an der entsprechenden Stelle ein Zeichen steht, das nicht »a« oder »b« ist. [xyz]\* Der Stern ist das Joker-Zeichen (*) und steht für eine beliebige Anzahl von Vorkommen eines Zeichens. K[a\*tze] würde beispielsweise sowohl »Kaaatze«, »Katze« als auch »Ktze« herausfiltern. [xyz]\+ Das Plus-Zeichen (+) steht für eine beliebige Anzahl von Vorkommen eines Zeichens. Im Gegensatz zum Stern muss das Zeichen allerdings mindestens einmal vorkommen. K[a\+tze] würde beispielsweise sowohl »Kaaatze«, als auch »Katze« herausfiltern – es muss mindestens 1 »a« vorhanden sein. $ Dieses Zeichen steht für das Zeilenende. hafen$ Die letzten Zeichen der Zeile müssen »hafen« sein. ^ Dieses Zeichen steht für den Zeilenanfang und ist nicht mit der Negierung (die in eckigen Klammern steht) zu verwechseln. ^Friedrichs Die ersten Zeichen der Zeile müssen »Friedrichs« sein.. Der Punkt steht für ein beliebiges Zeichen. In der Powershell mit regulären Ausdrücken arbeiten - PC-WELT. shafen In der Zeile muss die Zeichenkette »Friedr« enthalten sein.