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_INSENSITIVE
Java)를 사용하여/(?i)regex/
- 대신
- 정규 표현의 일부에 대해서만 모드 켜기 및 끄기
- 할 수도 있습니다.
/first(?i)second(?-i)third/
- 할 수도 있습니다.
- 수식자 범위
- 할 수도 있습니다.
/first(?i:second)third/
- 할 수도 있습니다.
- 정규 표현 내의 모드 지정
- regular-expressions.info/Word의 경계 (항상
\b
\w
a. 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 |