2014-09-12 5 views
0

'.'을 바꾸려고합니다. 2 개의 숫자가 아닌 기호 사이. replaceAll과 regEx를 사용했습니다.정규 표현식 부분 바꾸기

string.replaceAll("\\D\\.\\D", "_"); 

하지만 ' Java 메소드로이 문제를 해결할 수 있습니까? 아니면 자체 메소드를 작성해야합니까? 이 같은

+0

당신은 정규식에 (비) 캡처 그룹과 내다/lookbehind을 읽고 싶어 아마 것이다. – gpgekko

+2

무엇을 대체하려고합니까? 현재'AB.CD' 패턴에서,'.D'를 반환 할 것이고, '.'의 양쪽에 일치하는 1 문자가 있습니다. – Stewart

+0

''. "'을''."'로 대체하십시오. 내 대답에''. "'을''''로 대체하고 싶다고 가정하고 있습니다. – TheLostMind

답변

1

이 당신을 위해 작동 할 수 있습니다

yourString.replaceAll("(\\D)[.](\\D)","$1$2"); 
0

사용 정규식 : (?<=\D)(\.)(?=\D)

demo here

문제는 다음과 같습니다의 \ D 부분도 선택됩니다.

예 :

System.out.println("1.1".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : 1.1 
System.out.println("a.b".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : ab 
0

현재 패턴 AB.CD에서, 이것은, A.D을 반환은 일치하고 단지 한 문자 어느 측 .의합니다 (BC)

이 대체 한 내 생각에 당신이하려고하는 것 :

string.replaceAll("[^0-9]+\\.[^0-9]+", "."); 

나는 삼촌이다. 귀하가 성취하고자하는 바를 귀하의 설명에서 찾아보십시오.

+0

아니요. 번호를 바꾸기를 원하지 않습니다. 그는 단지 도트가 교체되기를 원합니다. – TheLostMind

+0

그런 경우, 나는'replaceAll'이 올바른 도구인지 확신하지 못합니다. 캡처 된 그룹과도 작동합니까? – Stewart