정규 표현식이 어떻게 작동하는지 아직도 이해할 수 없다는 것을 언급해야합니다. 아래 코드를 살펴보십시오. 여기이 Regex는 무엇을 대체합니까?
titleAndBodyContainer = titleAndBodyContainer.replaceAll("\\.(?=\\s|$)", " ");
는 titleAndBodyContainer
는 String
이다. 그러나 공간으로 대체되는 것은 무엇입니까? 마침표? 콤마? 물음표?
정규 표현식이 어떻게 작동하는지 아직도 이해할 수 없다는 것을 언급해야합니다. 아래 코드를 살펴보십시오. 여기이 Regex는 무엇을 대체합니까?
titleAndBodyContainer = titleAndBodyContainer.replaceAll("\\.(?=\\s|$)", " ");
는 titleAndBodyContainer
는 String
이다. 그러나 공간으로 대체되는 것은 무엇입니까? 마침표? 콤마? 물음표?
코드에서 모든 점 (.
)을 공백 ()으로 바꿉니다. 그러나 조건. 점은 공백 또는 줄 끝 부분에 있어야합니다. 예를 들어
: 그것은 공간 또는 라인의 단부를 갖는 한
가alex is dead. and alive.dead
alex is dead.
상기 두 예에서, 그것은 단지 dead
후 도트를 교체한다.
공간 \t\n\x0B\f\r
또는 end of line
또는 end of input
이미지에서 : Regexper.comhttp://www.regexper.com/#\.%28%3F%3D\s|%24%29
예 :
System.out.println("Hello. ".replaceAll("\\.(?=\\s|$)", "_"));
System.out.println("Hello.".replaceAll("\\.(?=\\s|$)", "_"));
System.out.println(".".replaceAll("\\.(?=\\s|$)", "_"));
System.out.println(". ".replaceAll("\\.(?=\\s|$)", "_"));
System.out.println(".com".replaceAll("\\.(?=\\s|$)", "_"));
System.out.println(". Hi".replaceAll("\\.(?=\\s|$)", "_"));
출력 i s :
Hello_ //there is a space after Hello_
Hello_//no space this time
_
_ //again, space after _
.com
_ Hi
중요한 것은 공백 문자 또는 줄 끝 문자가 소비되지 않는 것입니다. 일치 여부를 확인하는 데만 사용되지만 바꿀 수는 없습니다. 그게 전부 왜 첫 번째 예에서, "Hello. "
"Hello_ "
결과뿐 아니라 "Hello_"
titleAndBodyContainer = titleAndBodyContainer.replaceAll("\\.(?=\\s|$)", " ");
이 공백이나 문자열의 끝 뒤에 점 (.
)과 일치하고, 공백으로 대체합니다. 당신은뿐만 아니라 ?/()
을 바꾸려면
, 당신이 뭔가를 시도 할 수 :
titleAndBodyContainer = titleAndBodyContainer.replaceAll("[\\.\\?\\/\\(\\)](?=\\s|$)", " ");
정규식 코치는 정규 표현식을 설명하기위한 꽤 좋은 메커니즘이 있습니다. –