부분 문자열을 사용하여 문자열 검색<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />모두,
부분 문자열을 검색 기준으로 사용하여 일치하는 문자열을 검색하려고 합니다. 아래에 나와 있는 것처럼 여러 가지 방법을 시도했습니다. 이 작업을 수행하려면 RegEx 또는 Pat Match를 사용하는 더 나은 방법이 있어야 한다고 생각하지만 제대로 수행할 수 없습니다. 도움을 주시면 감사하겠습니다.
예를 들어 Air Traffic Sample Data 테이블을 사용하고 있습니다.
// 팻 매치를 이용한 방법 1
dt = 현재 데이터 테이블();
ColNames = dt << 열 이름 가져오기();
일치 = 목록();
sp = 팻 스팬("ID");
Pat Match(ColNames,sp>>Match);
성냥;
// 일치하는 결과가 없습니다. 그러나 동일한 코드에서 ID 자체가 열 이름인 경우 작동합니다. 그래서 검색을 수행하기 위해 검색 문자열의 일부를 사용하는 방법을 이해하고 싶습니다.
// 방법 # 2 Contains() 사용
for( i=1, i<= N 항목(ColNames), i++,
If(Contains(ColNames ,"아이디")== 1,
삽입(일치,i);
);
);
최고
우다이
Re: 부분 문자열을 사용하여 문자열 검색명시적 루프처럼 들리면 더 쉽고 명확해질 것입니다.
for( icol = 1, icol <= nitems(colnames), icol++,
// char(colnames에 정규식 사용 ) 필요한 일치 항목을 얻었을 때 이 루프에서 벗어나십시오.
)
열 이름에는 쉼표가 있고 icol 인덱스가 필요하고 정규식은 훨씬 간단할 수 있기 때문에.이것은 테스트되지 않았지만 다음과 같습니다.
if( ! 누락( regex( char(colnames[ icol ]), "ID" ) ), break() );
이름의 ID에 대해 각 아이콘을 테스트합니다.일치가 실패하면 regex는 missing을 반환합니다.
Re: 부분 문자열을 사용하여 문자열 검색크레이지@JMP :
제공한 솔루션이 작동하는 동안 - 2개의 후속 질문이 있습니다.
1. 일치하는 항목이 있는 경우 인덱스를 어떻게 얻습니까?
2. 열 이름이 다음과 같은 경우 - 제 경우에 수행합니다.
이름( "아이폰 7, 캘리포니아, 예" ) - ColNames
이름(\!" 아이폰 7 , 캘리포니아 , 예 \!") - 콜스트링
조언 부탁드립니다.
최고
우다이
Re: 부분 문자열을 사용하여 문자열 검색아마도 다음과 같이:
dt = 현재 데이터 테이블();
ColNames = dt << 열 이름 가져오기();
colstrings = 숯 (colnames);
일치 = 정규식(colstrings, "[{,]\s*([^{,}]*ID[^{,}]*)[,}]", "\1");
쇼(매치);
일치 = "항공편 ID";
쉼표나 중괄호를 사용하지 않는 열 이름에 따라 다릅니다.char 함수는 이름 목록을 문자열로 바꿉니다.
{항공사, 항공사 코드, 항공편 번호, 꼬리 번호, 항공편 ID, 이벤트, 공항, 시간,
원래 시간, 경도, 위도}
된다
"{항공사, 항공사 코드, 항공편 번호, 꼬리 번호, 항공편 ID, 이벤트, 공항, 시간, 원래 시간, 경도, 위도}"
나는 이것을 위해 정규식을 선택했습니다. ...어느 쪽이든 아름답지 않을 것이기 때문입니다.정규식 패턴 분석:
"[{,] 여는 중괄호 또는 쉼표
\s* 선택적 공백
([^{,}]*ID[^{,}]*) 바깥쪽 괄호는 \1 일치(아래에서 자세히)
[,}]" 쉼표 또는 닫는 중괄호
\1 부분 분해:
[^{,}]* 중괄호나 쉼표가 아닌 0개 이상의 문자
컬럼명에서 찾고 있는 단어를 아이디로
[^{,}]* 중괄호나 쉼표가 아닌 0개 이상의 문자
정규식의 세 번째 인수인 "\1"은 첫 번째 열린 괄호를 사용하여 대체 텍스트를 식별함을 의미합니다.