2011-01-19 5 views
1

가능한 중복 :
RegEx: Find zero at end of string정규식 : 제로 찾기 문자열의 끝에서 소수점 앞에

예를 들어

: 나는 0 32.20
에서 찾을 하시겠습니까

320 또는 302에서 0을 찾고 싶지 않습니다.

고마워! 간단히 말해서

+1

. 어느 쪽을 사용하고 있습니까? –

+0

정확한 중복 (동일한 사용자) : [정규식 : 문자열 끝에 0을 찾습니다] (정확한 http://stackoverflow.com/questions/4737676/regex-find-zero-at-end-of-string) –

+0

정확하지 않습니다. 복제. 지난 번에 "소수점 이하"에 추가하는 것을 잊어 버렸습니다. 나는 그 질문을 편집하지 않기로 결정했으나, 이미 몇 가지 대답을했기 때문에 새로운 것을 작성하기로했다. – dmr

답변

1

'.'을 0으로하고 싶지만 '.'는 포함하지 않으실 것 같습니다. 거기에있다. 이 경우 lookbehind 그룹이 필요합니다.

(?<=\.\d*?)\d$ 

사용중인 정규 표현식 엔진에 따라 다릅니다.

Here's some reference info on lookarounds.


UPDATE :

은 분명히 lookbehind ColdFusion에서 지원되지 않지만 대신 자바의 정규식 엔진을 사용할 수 있습니다. 위의 패턴을 사용하고 Java 정규식 엔진을 적용하는 방법은 this S.O. question에 대한 답변을 참조하십시오. 그 트릭을해야합니다.

참고 : \d이 숫자 문자에 유효한 구문인지 다시 확인하거나 [0-9]을 사용할 수 있습니다. 또한, 패턴 문자열이 건네지고 방법에 따라, 당신은 백 슬래시를 두 번해야 할 수도 있습니다 : 호환되지 않는 정규식 구현의 많은이 있습니다

"(?<=\\.\\d*?)\\d$" 
+0

RegEx 엔진이 해당 regEx를 인식하지 못합니다. ( – dmr

0

, 이것은 거의 모든 정규식 구현과 작동합니다 :

[.].*0$ 

당신은 같은 펄 더 잘 수행 할 수

\.\d*?0$ # A decimal point, followed by some number of digits ending with a 0 

을 ...하지만,이 구문 월 또는 5 월 RegEx 엔진에 따라 작동하지 않습니다.

+0

두 옵션 모두 소수점 이하의 다른 숫자도 제거한다는 것이 문제입니다. 난 그냥 마지막에 0을 없애고 싶다. – dmr

관련 문제