Java RegEx는 대소문자를 구분하지 않습니까?
Java에서는 replaceAll을 실행하여 다음과 같은 정규식 패턴을 찾습니다.
replaceAll("\\?i\\b(\\w+)\\b(\\s+\\1)+\\b", "$1");
(대소문자를 구분하지 않는 중복된 단어를 삭제합니다.테스트 테스트)를 어디에 두었는지 잘 모르겠습니다.?i처음에 있어야 한다고 읽었는데, 빼면 대소문자를 구분하지 않는 단어(테스트 테스트 등)가 아니라 연속되는 단어가 중복됩니다.그래서 처음에는 ?i를 추가할 수 있을 것 같았는데, 그렇게 하면 일이 잘 되지 않는 것 같습니다.무슨 생각 있어?감사합니다!
대소문자를 구분하지 않는 정규식을 대조하여 패턴을 사용하여 읽기 쉽게 만들 수도 있습니다.Case_Insensitive 상수:
Pattern mypattern = Pattern.compile(MYREGEX, Pattern.CASE_INSENSITIVE);
Matcher mymatcher= mypattern.matcher(mystring);
RegexBuddy는 처음에 포함시킬 경우 다음 구문이 올바르다고 합니다.
"(?i)\\b(\\w+)\\b(\\s+\\1)+\\b"
예. Java regex에서는 대소문자를 구분하지 않고 자유롭게 활성화 또는 비활성화할 수 있습니다.
다음과 같은 것을 원하는 것 같습니다.
System.out.println(
"Have a meRry MErrY Christmas ho Ho hO"
.replaceAll("(?i)\\b(\\w+)(\\s+\\1)+\\b", "$1")
);
// Have a meRry Christmas ho
삽입Pattern.CASE_INSENSITIVE 플래그는 다음과 같습니다.(?i)것은 아니다.\?i또, 1개의 불필요한 것에도 주의해 주세요.\b패턴에서 제거되었습니다.
그(?i)는 패턴의 선두에 배치되어 대소문자를 구분합니다.이 경우 패턴의 후반부에 덮어쓰지 않기 때문에 패턴 전체가 대소문자를 구분하지 않습니다.
실제로 대소문자를 구분하지 않고 전체 패턴의 일부만 사용할 수 있습니다.따라서 어디에 배치할지에 대한 문제는 사양에 따라 달라집니다(이 특정 문제의 경우, 그 이후로는 문제가 되지 않습니다만).\w대소문자를 구분하지 않습니다.
예를 들어 다음과 같은 일련의 문자를 접는 유사한 예를 보여 줍니다."AaAaaA"딱 맞게"A".
System.out.println(
"AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
.replaceAll("(?i)\\b([A-Z])\\1+\\b", "$1")
); // A e I O u
이제 실행이 대문자로 시작하는 경우에만 축소되도록 지정했다고 가정합니다.그럼 우린 이걸 넣어야 해(?i)적절한 장소:
System.out.println(
"AaAaaA eeEeeE IiiIi OoooOo uuUuUuu"
.replaceAll("\\b([A-Z])(?i)\\1+\\b", "$1")
); // A eeEeeE I O uuUuUuu
일반적으로 패턴 내의 모든 플래그를 원하는 대로 활성화 또는 비활성화할 수 있습니다.
「 」를 참조해 주세요.
java.util.regex.Pattern- regular-expressions.info/Modifiers
- 정규 표현 내의 모드 지정
- 대신
/regex/i(Pattern.CASE_INSENSITIVEJava)를 사용하여/(?i)regex/
- 대신
- 정규 표현의 일부에 대해서만 모드 켜기 및 끄기
- 할 수도 있습니다.
/first(?i)second(?-i)third/
- 할 수도 있습니다.
- 수식자 범위
- 할 수도 있습니다.
/first(?i:second)third/
- 할 수도 있습니다.
- 정규 표현 내의 모드 지정
- regular-expressions.info/Word의 경계 (항상
\b\wa. a. a.\s)
관련 질문
표현식 전체가 대소문자를 구분하지 않는 경우 플래그를 지정할 수 있습니다.
Pattern.compile(regexp, Pattern.CASE_INSENSITIVE)
패턴 매칭을 확인하는 첫 번째 문자열을 소문자로 유도할 수도 있습니다.패턴에 각각 소문자 기호를 사용합니다.
언급URL : https://stackoverflow.com/questions/3436118/is-java-regex-case-insensitive
'itsource' 카테고리의 다른 글
| JavaScript: 콜백 함수에 파라미터 전달 (0) | 2022.09.14 |
|---|---|
| 구조물의 특별한 점은 무엇입니까? (0) | 2022.09.14 |
| com.mysql.jdbc 클래스를 로드하고 있습니다.운전기사님.이것은 권장되지 않습니다.새로운 드라이버 클래스는 'com.mysql.cj.jdbc'입니다.드라이버 (0) | 2022.09.14 |
| PHP에서 1달러 금액으로 숫자를 포맷하려면 어떻게 해야 합니까? (0) | 2022.09.14 |
| 업데이트 후 Android Studio에서 리소스 오류 발생:리소스를 찾을 수 없습니다. (0) | 2022.09.14 |