2014-04-10 3 views
2

내 DB에 가져올 CSV 파일이 있습니다.정규식 그룹 내

샘플 입력 :

122545; bmwx3, 새, 레드, 화이트, 블랙,

내가 최종 출력은 다음과 같이되고 싶어 분홍색 :

INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "red"); 
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "black"); 
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "white"); 
INSERT INTO myTable VALUES ("122545", "bmwx3", "new", "pink"); 

네 번째 요소는 알 수없는 항목이있는 "하위 csv"입니다. 그러나 항상 그 형식 (아니오 ") 이상적으로

에 나는 스크립트를 요리해야합니다 수없는 경우, 정규 표현식을 사용하여 ++ 메모장에서이 작업을 수행하고 싶습니다.

을 내가 처음 내가 이것을 할 필요가 있다고 생각 :

122545; bmwx3, 새,이 같은 레드, 화이트, 블랙, 핑크

봐 :

122545; bmwx3, 새, 붉은

122545; bmwx3, 새, 블랙

122545; bmwx3, 새, 흰색

122545; bmwx3, 새, 핑크

내 문제가 내가 하위 -csv와 일치하는지 모르겠다. 순수 정규식 (프로그래밍 필요 없음)에서이 작업을 수행 할 수 있습니까?

+2

모든','을'122545; bmwx3; new;로 바꿀 수 있습니다. – hjpotter92

+0

색상 수가 고정되어 있습니까? – Robin

+0

@Robin 아니, 그렇지 않아. – Cornwell

답변

1

122545;bmwx3;new; 부분은 하지 고정

세 가지의 단계 인 경우 :

  • red,black,white,pink#LIMIT#122545;bmwx3;new;에 도착 다음 122545;bmwx3;new;red 따가워 만들기 \2#LIMIT#\1

  • (.*;)([^;]*) 대체 :

    교체\2\1\n
    (\w+)(?:,|(?=#LIMIT#))(?=.*#LIMIT#(.*)) 
    

  • #LIMIT#... 줄을 제거 (demo 참조) : 빈 문자열


^#LIMIT#.*를 교체 122545;bmwx3;new; 부분이 해결 된 경우

hjpotter의 아이디어는 정말 멋진 것 같다 @

, 당신은 단지 새로운

가 교체 남아 무엇

\n122545;bmwx3;new; 

,를 대체하는

^(\w*);(\w*);(\w*);(\w*)$ 

INSERT INTO myTable VALUES ("\1", "\2", "\3", "\4") 
와3210

당신은 잘 가야합니다!

1
확실히

없는 가장 간단한 방법은, 그러나 그것은 작동합니다 ^([^,]+;)(.+),([^,]+)$
가 교체 : $1$2\n$1$3

을 그리고 필요에 따라 Replace all 많은 시간을 클릭

을 찾으십시오!