2011-12-17 2 views
0

숨바꼭질에서 검색하는 것을, 나는 오랫동안 CSV를하고 난 예를 들어, 특정 단어가 포함 된 문자열을 검색 할 :이 발견JS 정규 표현식은 CSV

var str = "Dan Jobsy,Google Analitis,ejobs"; 

:

(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*) 

을하는 것입니다 CSV를 구문 분석하고 단어를 반환하고, 이것을 확장하고 특정 문자열이 포함 된 CSV 단어 만 반환하는 조건을 추가하는 방법을 알고 싶습니다. 내가 "OO"를 검색하는 경우처럼 만 "구글 Analitics"를 반환하지만 내가 검색하면

EDIT "작업"는 "댄 Jobsy"와 "ejobs"를 반환합니다이 에게

는 찾지 못했습니다

여기서 제시 한 해결책은 제가 제공 한 정규 표현식을 사용하는 것을 제외하고, 제가 스스로 해결할 수 있다면 여기에 ans를 게시 할 것입니다.

+1

매우 비슷한 질문 [내 대답] (http://stackoverflow.com/a/8497474/433790)을 참조하십시오 : [어떻게 자바 스크립트 CSV 문자열을 구문 분석 할 수 있습니까?] (http://stackoverflow.com/ q/8493195/433790) – ridgerunner

+0

멋지지만 원하는 것은 CSV 항목의 키워드가 포함 된 값만 검색하고 반환하는 것입니다 (예 : 10+ 설명 : – cuzzea

답변

0
var str  = "Dan Jobsy,Google Analitis,ejobs"; 

var needle = "job"; 
var matches = []; 

for (i in A = str.match (/(\"(?:[^\"]+|\"\")*\"|[^,]+)(?=$|,)/g)) { 
    if (A[i].toLowerCase().indexOf (needle.toLowerCase()) != -1) 
    matches.push (A[i]); 
} 

console.log (matches); 

출력

[ 'Dan Jobsy', 'ejobs' ] 
+0

이 코드를 사용하는 방법에 따라 다르지만이 코드는 regexp를 통해 실행되지 않습니다. 추가 검색을 건너 뛰고 싶습니다. – cuzzea

+0

바늘을 코드에 입력하는 정규식에 직접 입력하려면 ** 매우 지저분 해지고 바늘도 벗어나야합니다 (그렇지 않으면''StackOverflow? ''와 같은 문자열을 검색하지 않을 것입니다.) 나는 왜 당신이 복잡하게하고 싶어하는지 알지 못합니다. 당신이 문제를 해결할만큼 충분히 배우지 못하는 문제에 대한 해결책을 물어 본 이후로 특히 그렇습니다. –

+0

저는 배우는 것에 관심이 있습니다. 그러나 1-2 일 안에 해결책을 찾지 못할 것이라고 생각합니다. 위의 regexp가 어떻게 작동하고 문자열을 검색 할 수 있는지 이해합니다 (검색 문자열로 시작하는 검색 문자열을 반환합니다). 그 것은 빠른 검색이 필요한 매우 큰 CSV가 있고 regexp는 그것을 할 수있는 가장 좋은 방법 – cuzzea

0

String.search (패턴) :

은 문자열 정규식을 일치 발견하면 경기의 시작의 인덱스를 반환,없는 경우는 -1.

하지만 정규 표현식을 얻으려면 약간의 정규 표현 패턴을 연구해야합니다. 당신은 here 또는 구글에서 검색을 시작할 수 있습니다 자바 스크립트 정규 표현식 튜토리얼

+0

). 나는 이것을 연구 할 수 있음을 알고 있지만 if 아무도 이것을하는 방법을 안다 : – cuzzea

+0

잘, "oo"를 찾는 패턴은 간단하다 (oo). –

0

구분, 사용 사항 String.split (STR 또는 정규식)에 의해 자바 스크립트 문자열을 분할;

그래서 :

var str = "Dan Jobsy,Google Analitis,ejobs"; 
var ary_names = str.split(','), i = 0, ary_len = array.length, count = 0; 
for (i = 0; i < ary_len; i++){ 
    if (ary_names[i].match(/jobs/i)){ count++; } 
} 
// count is the # of times jobs was found. 

거기에서 당신은 루프, 같이 IndexOf를 사용할 수 있습니다 통해 검색 할 수있는 배열에 프레임 워크 등을 함께 포함한다.

+0

CSV에 값으로 ","이있는 항목이 들어있을 수 있으므로'str.split (',');보다 조금 더 복잡한 것이 필요합니다. –

+0

검색 문자열에 정규식에서 수식어/연산자입니까? –