如何使用正規表示式提取特定模式之間的字串?
你好,
我是正規表示式新手,我需要從用戶的 ID 中提取用戶名,例如:
我有以下長字串
123450_丹; 154396_凱利; 198756_dev;
結果需要是:dan
我需要使用什麼正規表示式才能提取 ID 為 123450 的 dan 名稱?
提前致謝。
回覆:如何使用正規表示式提取特定模式之間的字串?謝謝,工作完美!
回覆:如何使用正規表示式提取特定模式之間的字串?謝謝,工作完美。
回覆:如何使用正規表示式提取特定模式之間的字串?請改用此表格:
name = Regex( string, "123450_([a-zA-Z ]+);", "\1" );
回覆:如何使用正規表示式提取特定模式之間的字串?我之前使用 JMP 函數提供的腳本不需要任何修改。用於捕捉下劃線後的一個或多個「名稱」的正規表示式為(\w+\s*)+這意味著積累( )至少一個詞\w+ , 零個或多個空格\s*尾隨的加號表示重複該模式一次或多次。
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"; */
回覆:如何使用正規表示式提取特定模式之間的字串?嗨馬克,
只是 1 個問題,如果我的用戶名中有空格,我需要添加什麼:
例如:“123450_dan Fox;154396_kelli;198756_dev;”
我嘗試了以下正規表示式:
字串=“123450_dan 狐狸;154396_kelli;198756_dev;”
名稱 = Regex( 字串, "123450_(\w+ | \s+)", "\1" );
顯示(名稱);
結果:“dan”而不是“dan Fox”
提前致謝。
回覆:如何使用正規表示式提取特定模式之間的字串?只是為了好玩,並且因為正規表示式可能很難被其他人(或兩週後)閱讀,這裡有一個替代方案,使用 JMP 函數。
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
回覆:如何使用正規表示式提取特定模式之間的字串?謝謝馬克,
工作完美!回覆:如何使用正規表示式提取特定模式之間的字串?假設您希望名稱與模式「id_name;」中的特定 ID 相關聯,那麼此版本也可以運作。
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 );
回覆:如何使用正規表示式提取特定模式之間的字串?您沒有指定有關 ID 的太多詳細信息,因此這裡有一些入門示例。 我使用了 JMP 腳本,但此提取也可以在列公式中使用。
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 );