Java에서의 정규식 \\s vs. \\s
다음 두 표현은 어떤 차이가 있나요?
x = x.replaceAll("\\s", "");
x = x.replaceAll("\\s+", "");
첫 번째 것은 단일 공백과 일치하지만 두 번째 것은 하나 이상의 공백과 일치합니다.이들은 이른바 정규 표현식 수량화자이며, 문서에서 가져온 다음과 같은 일치를 수행합니다.
Greedy quantifiers
X? X, once or not at all
X* X, zero or more times
X+ X, one or more times
X{n} X, exactly n times
X{n,} X, at least n times
X{n,m} X, at least n but not more than m times
Reluctant quantifiers
X?? X, once or not at all
X*? X, zero or more times
X+? X, one or more times
X{n}? X, exactly n times
X{n,}? X, at least n times
X{n,m}? X, at least n but not more than m times
Possessive quantifiers
X?+ X, once or not at all
X*+ X, zero or more times
X++ X, one or more times
X{n}+ X, exactly n times
X{n,}+ X, at least n times
X{n,m}+ X, at least n but not more than m times
저 두 사람replaceAll
콜의 결과는 항상 동일합니다.x
단, 두 정규 표현은 동일하지 않다는 점에 주의해 주십시오.
\\s
- 단일 공백 문자와 일치합니다.\\s+
- 하나 이상의 공백 문자의 시퀀스와 일치합니다.
이 경우 모든 것을 빈 문자열로 대체하기 때문에 차이가 없습니다(단, 사용하는 것이 좋습니다).\\s+
효율성의 관점에서).빈 문자열이 아닌 문자열로 대체할 경우 두 문자열은 다르게 동작합니다.
우선 두 문장의 최종 출력은 동일하다는 것을 이해해야 합니다.즉, 주어진 문자열에서 모든 공백을 삭제합니다.
하지만x.replaceAll("\\s+", "");
(문자열이 여러 개의 연속된 공간을 가질 수 있는 경우) 공간을 트리밍하는 보다 효율적인 방법이 됩니다.이는 regex가 regex를 사용하기 때문에 치환 횟수가 줄어들 가능성이 있기 때문입니다.\\s+
는 한 번에1개 이상의 스페이스를 대조하여 빈 문자열로 바꿉니다.
따라서 양쪽에서 동일한 출력을 얻을 수 있지만 다음 방법을 사용하는 것이 좋습니다.
x.replaceAll("\\s+", "");
첫 번째 정규식은 공백 문자 하나와 일치합니다.두 번째 정규식은 마지못해 하나 이상의 공백 문자와 일치합니다.대부분의 경우 이 두 정규식은 매우 유사하지만 두 번째 경우 regex 조회가 실패하는 것을 방지하면 regex가 더 많은 문자열과 일치할 수 있습니다.http://www.coderanch.com/t/570917/java/java/regex-difference 에서
언급URL : https://stackoverflow.com/questions/15625629/regex-expressions-in-java-s-vs-s
'programing' 카테고리의 다른 글
아티팩트 org.apache.maven을 전송할 수 없습니다.플러그인: maven-surefire-pair: pattern: 2.7.1에서 central(http://repo1.maven.org/maven2)로) (0) | 2022.09.04 |
---|---|
부언, 조건부 연산자 및 자동 박스 (0) | 2022.09.04 |
Axios 호출에서 Vuejs img 요소로 이미지를 표시하려면 어떻게 해야 합니까?효과가 있는 것을 본 적이 없다 (0) | 2022.09.03 |
IntelliJ에서 이 기호는 무엇을 의미합니까? ('J'가 들어간 파일 이름의 왼쪽 아래 모서리에 있는 빨간색 원) (0) | 2022.09.03 |
Java: 문자열에서 일치 위치를 가져오는 방법? (0) | 2022.09.03 |