2009-09-28 2 views
0

다음 문자열이 있습니다. 나는 그것을 두 줄 아래에 명확하게하기 위해 부러 뜨렸다. 그러나 그들은 1 개의 선이다.정규식을 사용하여 문자열 가져 오기

WHEN NVL(somevar1, 0) > 0 THEN 
(CAST(NVL(somevar2, 0) AS 
FLOAT(53))/CAST(NVL(somevar3, 0) AS FLOAT(53))) * 100 

나는 somevar1, somevar2 및 somevar3을 얻을 수 있도록 정규 표현식을 작성하려고합니다.

나는 이런 식으로 뭔가를 시도했다 :

NVL(.*,) 

을하지만 대신 첫 번째 쉼표의 마지막 쉼표를 일치합니다.

나는 이걸 잘하고있다.

답변

5

비선형 한정 기호를 모두 지원하는 것은 아니므로 사용중인 정규식 엔진을 알면 도움이됩니다.

NVL\((.*?), 

또는

NVL\(([^,]*), 
+0

SilentGhost는 NVL \ ((\ w +?), ' – SilentGhost

+0

'을 사용하는 것이 더 낫다고 생각합니다.하지만 지원하지 않는 정규식 엔진을 실행했습니다. 슬픈. 또한 필자는 광산이 여전히 탐욕 스럽다는 말을 했어야했다. 변수 이름의 양쪽에 공백이 포함될 수 있었고 (\\ Drake의 원본처럼), \ w를 사용하면 양측에 \ s *가 필요할 수도 있고 경기 후 트림. – Joe

3

당신의 시도는 탐욕스러운 정규 표현식입니다. 시도는 /NVL\((.*?),/이고 결과는 역 참조 1이어야합니다.

2

내가 그렇게 '단어 문자를'스타일로 * 대신 \w (또는 아마도 [\w_$])를 사용하는 것 (문자, 숫자 :

는 다음 중 하나 시도)

+0

당신은 한정어와 클래스를 혼합하고 있습니다. – SilentGhost

관련 문제