Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?
Hallo,
Ich bin neu bei Regex und muss die Namen der Benutzer aus ihrer ID extrahieren, zum Beispiel:
Ich habe die folgende lange Zeichenfolge
123450_dan; 154396_kelli; 198756_dev;
Das Ergebnis muss sein: dan
Welchen regulären Ausdruck muss ich verwenden, um den Namen Dan mit der ID 123450 zu extrahieren?
Dank im Voraus.
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Danke, funktioniert perfekt!!
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Danke, funktioniert perfekt.
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Verwenden Sie stattdessen dieses Formular:
name = Regex( string, "123450_([a-zA-Z ]+);", "\1" );
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Das Skript, das ich zuvor mit JMP-Funktionen bereitgestellt habe, würde keine Änderungen erfordern.Der reguläre Ausdruck zum Erfassen eines oder mehrerer „Namen“ nach dem Unterstrich wäre (\w+\s*)+ was bedeutet, akkumulieren ( ) mindestens ein Wort \w+ , null oder mehr Leerzeichen \S* und das nachgestellte Plus impliziert, dass das Muster einmal oder mehrmals wiederholt wird.
Names Default to Here(1);
string="123450_dan fox; 154396_kelli ann marie; 198756_dev;";
name1 = Regex( string, "123450_((\w+\s*)+\b)", "\1" );
name2 = Regex( string, "154396_((\w+\s*)+\b)", "\1" );
Show( name1, name2 ); <BR />/*: name1 = "dan fox"; name2 = "kelli ann marie"; */
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Hallo Mark,
Nur eine Frage: Was muss ich hinzufügen, wenn im Benutzernamen ein Leerzeichen vorhanden ist:
zum Beispiel: „123450_dan fox; 154396_kelli; 198756_dev;“
Ich habe den folgenden Regex ausprobiert:
string="123450_dan fox; 154396_kelli; 198756_dev;"
name = Regex( string, "123450_(\w+ | \s+)", "\1" );
Name anzeigen );
Ergebnis: „dan“ statt „dan fox“
Dank im Voraus.
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Nur zum Spaß und weil reguläre Ausdrücke für andere (oder zwei Wochen später) schwer zu lesen sein können, finden Sie hier eine Alternative: die Verwendung von JMP-Funktionen.
Names Default to Here( 1 );
// test string
string = "123450_dan; 154396_kelli; 198756_dev;";
//create a list of id_name
id = Words(string, ";");
//create a list if ids, a list if names, an associative array(keyed list)
idlist={};
namelist={};
lookup = [=>""]; //Associative Array that retuns an empty string, if number is not valid
for(i=1, i<=nitems(id), i++,
InsertInto(idlist, num(word(1,Trim(id[i]),"_")) );
InsertInto(namelist, Titlecase(word(2,Trim(id[i]),"_")) ); //don't need TitleCase
lookup[idlist[i]]=namelist[i] //ids are the keys and names are the values
);
show(id, idlist, namelist, lookup, lookup[198756], lookup[128954]); //last one is not valid
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Danke Mark,
Funktioniert perfekt!!Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Angenommen, Sie möchten, dass der Name einer bestimmten ID im Teil „id_name;“ zugeordnet wird, dann funktioniert auch diese Version.
Names Default to Here( 1 );
// test string
string = "123450_dan; 154396_kelli; 198756_dev;";
// target ID
id = "123450";
// assume specific ID
name = Regex( string, id || "_(\w+);", "\1" );
Show( name );
Betreff: Wie extrahiere ich eine Zeichenfolge zwischen bestimmten Mustern mithilfe von Regexp?Sie haben nicht viele Details zur ID angegeben, daher hier ein paar Beispiele für den Anfang. Ich habe ein JMP-Skript verwendet, aber diese Extraktion könnte auch in einer Spaltenformel verwendet werden.
Names Default to Here( 1 );
// test string
string = "123450_dan; 154396_kelli; 198756_dev;";
// assume specific ID
name = Regex( string, "123450_(\w+\b)", "\1" );
Show( name );
// assume first ID with 6 numbers
name = Regex( string, "\d{6}_(\w+\b)", "\1" );
Show( name );
// assume first ID with any number of numbers
name = Regex( string, "\d+_(\w+\b)", "\1" );
Show( name );