Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Sonstige) - RegEx Suchstring



noobee
23.07.2022, 15:34
Moin community,

es geht um meine Variablen (php), welche ich in Funktionen umbauen möchte.
Gegeben sind jede Menge Variablen dieser Art:
$GLOBALS["FOUNDER_north1338_274hbg"] und
$GLOBALS['FOUNDER_south926hsbggtf']
Daraus soll werden meine Funktion:
SEARCHER("FOUNDER_north1338274hbg")

In notepadd++ ohne regex wäre der Anfang kein Problem. Ich suche einfach nach
$GLOBALS["FOUNDER_ und ersetze dies mit
SEARCHER("FOUNDER_. Das anschließende Problem ist
1. die variable Länge des Folgestrings (hier z.B. north1338_274hbg oder south926hsbggtf)
2. das notepad++ Ende der Variable "] nicht ersetzen kann, da dass natürlich noch bei 1000 anderen Zeilen im Code vorkommen kann.

Ich brauch also RegEx, um den String in der Mitte zu behalten und drumrum das
$GLOBALS["FOUNDER_ in
SEARCHER("FOUNDER_
und das
"] in
")
zu ändern. Hat da jemand den passenden Ausdruck zur Anhand? Ich habe mich auf https://regexr.com/ schon umgesehen. Aber ohne Kenntnisse von RegEx wohl eher schwierig.

moreau
23.07.2022, 15:46
Suchen: \$GLOBALS\[["'](.+?)["']\]
Ersetzen: SEARCHER("$1")

noobee
23.07.2022, 16:20
Danke für Die Hilfe.
Leider findet Regex jetzt neben
$GLOBALS["FOUNDER_ auch andere
$GLOBALS[" . Das hatte ich sicher nicht erwähnt. Es soll nur
$GLOBALS["FOUNDER_"] oder
$GLOBALS['FOUNDER_'] gefunden werden und durch
SEARCHER("FOUNDER_") oder
SEARCHER('FOUNDER_') ersetzt werden

moreau
23.07.2022, 16:49
Okay, dann probiers mal hiermit:

Suchen: \$GLOBALS\[["'](FOUNDER_.+?)["']\]
Ersetzen: SEARCHER("$1")

edit: wenn '...' nicht durch "..." ersetzt werden soll:

Suchen: \$GLOBALS\[(('FOUNDER_.+?')|("FOUNDER_.+?"))\]
Ersetzen: SEARCHER($1)

noobee
23.07.2022, 17:29
Ah super. Der erste Fortschritt ist zu sehen. Jetzt werden nur noch die $GLOBALS["FOUNDER_..."] gefunden. Das sieht gut aus.

Aber beim Ersetzen geht was schief. Das Ergebnis ist komplett ohne Klammern und Hochkommas. Ich erkenne aber auch nicht wirklich, was die RegEx SEARCHER($1) macht ;)

Gefunden wird:
$GLOBALS['TXT_...']
und geändert wirds in:
SEARCHER"TXT_..."

Das geänderte sollte aber so aussehen:
SEARCHER("TXT_...")


Vielleicht nochmal zur Übersicht falls ich das nicht ordentlich erklärt habe:
$GLOBALS['FOUNDER_abbbfgdz273hd_knff8_001'] soll werden zu SEARCHER('FOUNDER_abbbfgdz273hd_knff8_001')
$GLOBALS['FOUNDER_7dhf6_003'] soll werden zu SEARCHER('FOUNDER_7dhf6_003')

moreau
23.07.2022, 18:14
Lag an notepad++, bei meinem Editor (und bei den meisten anderen) funktioniert mein Code. Für notepad++ musst du beim Ersetzen SEARCHER\("$1"\) nehmen, dann sollte es endgültig funktionieren.

noobee
23.07.2022, 18:33
:-) Yeah, das sieht gut aus. Ich danke dir mein Bester. Das erste Bier heute Abend geht auf dich ;) ;) ;)