큰 파일을 변환하는 수동 작업을 줄이기 위해 XML 파일을 Eclipse 내의 SQL 문으로 변환하려고합니다.Eclipse regexp에서 반복되는 패턴 일치
<TABLE_NAME COL_1="value1" COL_2="value2"/>
가로 변환해야합니다 :
라인 등 지금까지
insert into TABLE_NAME (COL_1, COL_2) values ("value1", "value2");
, 나는 일치 테이블 이름 및 첫 번째 열/값 쌍을 포착하는 데 성공했다 : 끝 부분 .*
<(\w+)(\w+)=(".+?").*/>
는 patte의 첫 번째 부분을 테스트하기 위해 단지 거기 rn이며 완료되면 제거해야합니다.
패턴을 대체 산출 다음 다음과 같은 결과 :insert into $1 ($2) values ($3);
insert into TABLE_NAME (COL_1) values ("value1");
제가하는 데 문제는 열 수가 다른 테이블에 대해 서로 다른 것을, 그래서 N 일치하는 것이다 일반적인 패턴을 싶습니다 열과 값의 쌍을 사용하고 캡처 된 그룹을 반복적으로 사용합니다. \G
이 좋은 후보 인 것 같지만 아직까지 어떻게해야하는지 이해하지 못했습니다.
이상적으로 이것은 하나의 regexp 문에서 해결할 수 있습니다.하지만 순차적으로 실행해야하는 여러 명령문과는 반대가되지는 않을 것입니다. (실제로 개발자가 한 번 실행하도록 강요하고 싶지는 않지만 모든 열/값 쌍에 대해).
누구든지 아이디어가 있습니까?
제 경험상 XML 변환에 XSLT를 사용하는 것이 더 좋습니다.단일 정규식으로이 문제를 해결할 수 있을지는 모르겠지만 간단한 Java 프로그램과 여러 정규식 (예를 들어 하나는 테이블과 하나의 열에 대해 하나)으로 먼 길을 갈 수 있습니다. –
@Benjamin 팁 주셔서 감사합니다. XSLT를 살펴 보겠습니다. 나는 전에 그것을 사용한 적이 없다. regexp와 Perl에 대한 경험이 있기 때문에 첫 번째 반응은 그것을 사용하는 것이 었습니다. 이 경우에는 사용할 수있는 최상의 도구가 아닐 수도 있습니다. –