Java 정규 표현식 패키지 java.util.regex를 사용하는 Pentaho에서 작업 중입니다. 내가 무시하고 시도 할 문자열의 긴 부분이Regex - 문자열의 일부를 무시하십시오.
^StartofString Controls\(param1="(D[0-9]{0,})",param2="(G[0-9]{0,})",param3="([^"]{0,})",param4="([^"]{0,})"\):(?:.*)param5="([^"]{0,})",.*
:
는 둘 다 시작하고 문자열의 끝에서 텍스트 파일의 라인에서 많은 정보를 추출 할 do with so (?:.*)
단계에서 Regex를 테스트했지만 변환을 실행할 때 긍정적 인 Lookahead가 작동하는 것 같습니다. 나는 '필터 행'자바 스크립트 단계에서 이전 단계 및 추출 그룹의 부울 확인, '정규식 평가'단계에 문자열을 테스트 : patterStr가에서보다 같은 정규식 인과
var pattern = Packages.java.util.regex.Pattern.compile(patternStr);
var matcher = pattern.matcher(content.toString());
var matchFound = matcher.find();
' 정규식에서 문자열의 일부를 무시하는 것에 대해 많은 질문을 읽었지만 여전히 답을 찾을 수 없습니다. 도움이됩니다. 필요한 경우 더 많은 정보를 제공 할 수 있습니다.
아무 생각이 무엇인지 너의 문제는. 한 가지 확실한 것은 :'(? :. *)'는 비 캡처 그룹이며 미리보기가 아닙니다. –
변환 코드를 볼 수 있습니까? 비 캡처 그룹을 사용하면 트릭을 수행하지 않습니다. 비 캡처 그룹은 캡처 그룹이 없음을 의미하지만 일치하는 텍스트는 여전히 출력에 있습니다. 그냥 그룹에 없어요 – Aaron
... 나는 비 캡처 그룹과 미리보기를 섞어 놓았습니다. 내가 원하는 것은 param5에 도달 할 때까지 문자열의 큰 부분을 캡처하지 않는 것입니다. 전체 변형을 보는 것이 어떻게 도움이되는지 확실하지 않으며 내가 보여서는 안되는 합리적인 정보가 있습니다. – v01dv01d