필드가 도시 쉼표 상태를 유지하기로되어있는 곳에 텍스트 파일 (bar-delimited)이 있습니다. 예 :정규식 : 그룹 OR 그룹
|Boston, MA|
내 응용 프로그램에서는 두 개의 다른 필드로 도시와 주를 캡처해야합니다. 이것은 전체 라인을 처리 할 수있는 큰 정규식 부분이지만,이 필드를 처리하는 부분이다
\|(.+),(.+[^|]+)\|
및이 하나 개의 그룹과 다른 그룹에 후 텍스트에 콤마 앞의 텍스트를 캡처한다. 필드가 예상대로 채워지면 잘 작동합니다.
내 문제는 때때로,이 필드에 올 것입니다 중 하나
- NO 막대 사이의 정보 없음 (
||
)
또는 - 쉼표없이 텍스트 (|unknown|
)
그리고이 정규식을 다음과 같이 수정해야합니다.
-
막대 사이에 정보가없는 경우
, 쉼표없이 텍스트 문자열은 해당 문자열이 그룹 한으로 캡처됩니다이 있으면 나는 아직도 빈 값
2 개 그룹을 얻고, 그룹 2로 캡처 당신이 얻을해야이 정규식으로 빈 값
이는 영업 이익의 요구 사항에 따라 정답이다. '\ | \ s * ([^, | * *) \ s * (? :, \ s * ([^ |] *) \ s *)? \ | 첫 번째 표현식에서 느린 한정 기호를 제거 할 수 있습니다. ' – ctwheels
감사합니다. lazy quanitifier가 없으면 그룹 값의 끝에 공백을 얻을 수 있습니다. '| Boston, MA | '에서와 마찬가지로 두 번째 그룹은 "MA"(끝의 공백)입니다. – spaark
유효한 포인트, 값을 정리하는 데 도움이 – ctwheels