2014-02-17 2 views
0
나는 정규 표현식 (REGEX_EXTRACT_ALL)와 하둡 돼지를 사용하고

는 "읽는 방법 : 나는 두 그룹을 expeting있어정규 표현식 -이 자바 구문 분석이다 을 내가 문자열이 - 문자

"DYN_USER_ID=32753477; $Path=\"/\"; DYN_USER_CONFIRM=e6d2a0a7b7715cb10d1dca504e3c5e80; $Path=\"/\"" "Nokia6070/2.0 (03.20) Profile/MIDP-2.0 Configuration/CLDC-1.1" 

:

합니다.
First: DYN_USER_ID=32753477; $Path=\"/\"; DYN_USER_CONFIRM=e6d2a0a7b7715cb10d1dca504e3c5e80; $Path=\"/\" 

Second: Nokia6070/2.0 (03.20) Profile/MIDP-2.0 Configuration/CLDC-1.1 

첫 번째 문자열에는 "문자가 있지만 이스케이프 문자 \가 있습니다.

"(.*)" "(.*)" 

그러나 최고의 하나입니다
단순화하고 있습니다 솔루션입니다?

답변

1
"(.*)(?<!\\\\)" "(.*)" 

이 사용 negatve lookbehind : (?<!☀) 여기에 문자 백 스페이스가 정규식 이스케이프 및 문자열 이스케이프 백 슬래시로 표시되는 몇 가지 문자열을 ☀입니다.

1

이상적으로, 당신은 마지막으로 구분 "에 대한 첫 번째 구분 "에서 일치하지만 문제가 " 문자를 탈출 무시되도록 부정 문자 클래스 [^"]를 사용해야합니다. (?:\\.|[^"\\])+는 이스케이프 문자 또는 여러 [^"\\] 문자 중 하나와 일치합니다

"((?:\\.|[^"\\])+)" "((?:\\.|[^"\\])+)" 

그룹 : 당신이 "을 탈출하고 문자열에 \을 탈출 할 수있는 경우이 같은 것을 사용하는 경우, 그것은 더 좋을 것이다.

regex101 demo