정규 표현식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?
안녕,
저는 정규식을 처음 사용합니다. 예를 들어 ID에서 사용자 이름을 추출해야 합니다.
다음과 같은 긴 문자열이 있습니다
123450_dan; 154396_kelli; 198756_dev;
결과는 다음과 같아야 합니다: dan
ID가 123450인 dan이라는 이름을 추출하려면 어떤 정규식을 사용해야 합니까?
미리 감사드립니다.
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?감사합니다. 완벽하게 작동합니다!!
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?감사합니다. 완벽하게 작동합니다.
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?대신 다음 양식을 사용하세요.
name = Regex( string, "123450_([a-zA-Z ]+);", "\1" );
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?이전에 JMP 함수를 사용하여 제공한 스크립트는 수정이 필요하지 않습니다.밑줄 다음에 하나 이상의 "이름"을 캡처하는 정규식은 다음과 같습니다. (\w+\s*)+ 쌓인다는 뜻이다 ( ) 적어도 한 단어 \w+ , 0개 이상의 공백 \에스* 뒤에 오는 플러스는 패턴을 한 번 이상 반복한다는 것을 의미합니다.
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"; */
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?안녕 마크,
질문이 하나 있습니다. 사용자 이름에 공백이 있는 경우 무엇을 추가해야 합니까?
예: "123450_dan fox; 154396_kelli; 198756_dev;"
다음 정규식을 시도했습니다.
string="123450_dan 폭스; 154396_kelli; 198756_dev;"
name = Regex( string, "123450_(\w+ | \s+)", "\1" );
표시(이름);
결과: "dan fox" 대신 "dan"
미리 감사드립니다.
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?단지 재미를 위해서이고 정규식은 다른 사람이(또는 2주 후에) 읽기 어려울 수 있으므로 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
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?고마워요 마크,
완벽하게 작동합니다 !!Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?"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 );
Re: 정규식을 사용하여 특정 패턴 사이의 문자열을 추출하는 방법은 무엇입니까?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 );