RegEx search and Replace
Sven Schmidt
- sonstiges
Tag zusammen,
habe ein kleines Regex-Prob.
Mein Regex lautet so:
^.+[^,-!\s]pDhMc
Ich möchte vollgendes erreichen:
In einer beliebigen Zeile soll die Zeichenfolge pDhMc gesucht werden, von dort aus soll nach links jedes Zeichen welches nicht ein Leerzeichen, ein Komma, ein Rufzeichen oder ein Minus ist bis max. zum Zeilenanfang ebenfalls gesucht werden.
Dies soll ein Search und Replace mit Powergrep ermöglichen.
Nun kommen bei mir aber vollgende Ergebnisse:
Beispiele:
if(!pDH->pDhMc // Warum steht hier ein Minus und ein Rufzeichen
oder:
CPO_DH *pChPo = CDhMcConnector::pDhMc // Warum die Leerzeichen?
Hoffe ich habe es verständlich beschreiben können.
Bin in diesem Bereich noch Anfänger und würde mich über Hilfe freuen!
MFg
Hi,
^.+[^,-!\s]pDhMc
In einer beliebigen Zeile soll die Zeichenfolge pDhMc gesucht werden, von dort aus soll nach links jedes Zeichen welches nicht ein Leerzeichen, ein Komma, ein Rufzeichen oder ein Minus ist
statt dessen hast Du alle Zeichen ausgeschlossen, die Whitespace oder Komma bis Ausrufezeichen sind. Innerhalb einer Zeichenklasse ist das Minus ein Sonderzeichen.
Cheatah
Hallo,
Mein Regex lautet so:
^.+[^,-!\s]pDhMc
ok. Daß das "-" innerhalb einer Zeichenklassendefinition eine besondere Bedeutung hat, weißt Du ja, oder?
if(!pDH->pDhMc // Warum steht hier ein Minus und ein Rufzeichen
Weil der RegExp paßt:
if(!pDH- = .+
= [^,-!\s]
pDhMc = pDhMc
;)
CPO_DH *pChPo = CDhMcConnector::pDhMc // Warum die Leerzeichen?
Dito:
CPO_DH *pChPo = CDhMcConnector: = .+
: = [^,-!\s]
pDhMc = pDhMc
Tip: laß mal das .+ weg und korrigiere die Zeichenklassendefinition (Stichwort "-").
Ciao,
Andreas
Vielen Dank für die Antworten!
Habe es jetzt, vor allem habe ich wieder etwas gelernt :-)
Nun noch eine Frage:
gesucht wird Abcdef, wenn dies in einer Zeile gefunden wird soll ein // an den Zeilenanfang geschrieben werden. Der Rest der Zeile soll aber unberührt bleiben.
Eine Idee? Wie gesagt, ich lerne noch.
Danke für das Verständnis!
Gruß
Svenfranzisko
gesucht wird Abcdef, wenn dies in einer Zeile gefunden wird soll ein // an den Zeilenanfang geschrieben werden. Der Rest der Zeile soll aber unberührt bleiben.
Svenfranzisko,
Du suchst nach
dem Zeilenanfang /^/
gefolgt von beliebig vielen Zeichen, merken in $1 /(.*)/
dann /(Abcdef)/, merken in $2
und nochmals beliebig viele Zeichen /(.*)/, merken in $3
bis zum Zeilenende /$/
Das ersetzt du durch //$1$2$3
Live long and prosper,
Gunnar
und nochmals beliebig viele Zeichen /(.*)/, merken in $3
bis zum Zeilenende /$/
Heute ist wohl mein Ingrid-Tag. ;-)
Das Suchen nach den Zeichen hinter "Abcdef" ist nicht nötig.
Live long and prosper,
Gunnar
dem Zeilenanfang /^/
gefolgt von beliebig vielen Zeichen, merken in $1 /(.*)/
dann /(Abcdef)/, merken in $2
und nochmals beliebig viele Zeichen /(.*)/, merken in $3
bis zum Zeilenende /$/Das ersetzt du durch //$1$2$3
Hallo Gunnar,
habe dank deiner Hilfe die Lösung gefunden, allerdungs sieht diese bei Powergrep etwas anders aus:
searchbox:
^(.*)(mat)
Replacebox:
//\u0
Vielen Dank für den Tipp!!
Gruß Svenfranzisko