2014-12-15 5 views
1

루비 정규식 표현식 (\d*[,]?\d*[.]\d+)은 45.00과 45.00 %를 모두 충족시킵니다. 어떻게 조정에만 45.00 및 45.00 %십진수와 백분율 및 십진수 만 일치시키는 Ruby 정규식

+0

흠 ... 난 당신의 마지막 문장에 당신이 ~ 만 45.00 및 NOT 45.00 %의 *를 의미 있기를 바랍니다, 그렇지 않으면 그것은 말이되지 않기 때문입니다. –

+1

당신은 @ AlinPurcaru의 코멘트를 보았지만 아무도 대답하지도 않았고 질문을 명확히하지도 않았습니다. 안좋다. 수정하여 명확히하십시오. 문자열에서 추출하고 싶지 않은 몇 가지 예제를 제공하면 도움이됩니다. –

+0

내 대답에 남긴 코멘트를 읽은 후 질문을 명확히하십시오. 내 대답을 삭제했습니다. "예를 들어, 내 문서에서 45.00, 45.00 (공백 없음) %, 45,000.00 (공백 없음) $, 34,999.00,56.78.I 등의 다른 사람들이 주석을 보길 원할 수 있습니다. (98.05, 9,990.00)가 아닌 (98.56 %, 87.90 $) "와 같은 십진수 만 추출하려고합니다. btw, 의견을 남기기보다는 질문을 편집하고 거기에 정보를 추가해야합니다. –

답변

3

그냥 부정적 예측을 추가하고 소수가 소유 일치하게 일치하는이 정규식에 :

\d*[,]?\d*[.]\d++(?!%) 

Demo

+0

당신은 소유욕을 의미, 그것은 이미 욕심이 많았 어 :) – pguardiario

+0

@ pguardiario 수정 주셔서 감사! 내가 소유욕 = 탐욕 스럽다는 것을 잘못 기억했다. 왜냐하면 내가 이것을 탐욕스런 알고리즘 *과 연관 시켰기 때문이다. –

0

난 당신이 찾고있는 정확하게 모르겠습니다을 어느 쪽이든. 이 시도 할 수 있습니다, 그것은 45.00 및 45.00 %

(\d*[,]?\d*\.\d+[%]?) 

하지만 당신의 정규식과 일치 Rubular

당신은 테스트 데이터의 여러 줄을 입력 한 후 확인하실 수 있습니다와 정규식의가 테스트하는 가장 좋은 방법 모두 일치합니다 당신이

0

을 기대 I가 그를 정리합니다 :

\d[\d,.]*+(?!%) 
+1

클린업에서 오탐 (false positive)을 도입했습니다 : '0,, 0,' –

+0

@Alin과 일부 잘못된 음수를 제거했습니다 : 1,000,000 :) – pguardiario

관련 문제