Programing

Java RegEx 메타 문자 (.) 및 일반 점?

lottogame 2020. 6. 22. 07:49
반응형

Java RegEx 메타 문자 (.) 및 일반 점?


Java RegEx .에서 문장에서 사용하는 메타 문자와 일반 점 의 차이점을 찾는 방법 . 너무 같은 다른 메타 문자에 대한 이런 종류의 상황을 처리하는 방법 ( *, +, /d, ...)


정규 표현식에서 특별한 의미를 가진 점이나 다른 문자를 일반 문자로 사용하려면 백 슬래시로 이스케이프 처리해야합니다. Java의 정규 표현식은 일반적인 Java 문자열이므로 백 슬래시 자체를 이스케이프해야합니다. 따라서 두 개의 백 슬래시가 필요합니다.\\.


다른 회원들이 제안한 솔루션은 저에게 효과적이지 않습니다.

그러나 나는 이것을 발견했다 :

Java regexp 쓰기에서 점을 벗어나려면 [.]


Perl 스타일 정규 표현식 (Java 정규식 엔진이 어느 정도 기반)은 다음 문자를 특수 문자로 취급합니다.

.^$|*+?()[{\캐릭터 클래스 이외특별한 의미를 가지고

]^-\문자 클래스 에서 특별한 의미를 갖습니다 ( [...]).

따라서 컨텍스트에 따라 해당 기호 (및 해당 기호 만)를 이스케이프 처리해야합니다 (또는 문자 클래스의 경우 잘못 해석 할 수없는 위치에 배치).

다른 문자를 피하는 것은 당연히 가능하지만 일부 정규식 엔진은이를 구문 오류로 처리합니다. 예를 들어 \_.NET에서 오류가 발생합니다.

예를 들어 , Perl에서는 \<리터럴 <해석 되지만 egrep"단어 경계"라는 의미 로 잘못된 결과 가 발생할 수 있습니다.

쓰기 그래서 -?\d+\.\d+\$경기에 1.50$, -2.00$등을 [(){}[\]]괄호 / 중괄호 / 괄호의 모든 종류와 일치하는 문자 클래스.

사용자 입력 문자열을 정규식으로 안전한 형식으로 변환해야하는 경우을 사용하십시오 java.util.regex.Pattern.quote.

더 읽을 거리 : Jan Goyvaert의 메타 문자 탈출에 대한 RegexGuru 블로그


백 슬래시로 특수 문자를 피하십시오. \., \*, \+, \\d,과에 이렇게. 확실하지 않은 경우 비 알파벳 문자는 특수한지 여부에 관계없이 피할 수 있습니다. 자세한 정보 는 java.util.regex.Pattern에 대한 javadoc을 참조하십시오 .


". *"로 끝나는 문자열을 일치 시키려면 다음을 사용해야했습니다.

"^.*\\.\\*$"

당신이 그것에 대해 생각하면 바보 : D 여기에 무슨 뜻인지. 문자열의 시작 부분에는 문자 "0"이 있고 그 뒤에 점 "."이있을 수 있습니다. 문자열 끝에 별표 (*)가옵니다.

나는 이것이 누군가에게 유용하기를 바랍니다. Fabian의 백 슬래시에 감사드립니다.


다음은 붙여 넣기를 직접 복사 할 수있는 코드입니다.

String imageName = "picture1.jpg";
String [] imageNameArray = imageName.split("\\.");
for(int i =0; i< imageNameArray.length ; i++)
{
   system.out.println(imageNameArray[i]);
}

실수로 "."앞뒤에 공백이 있으면 어떻게됩니까? 그런 경우는? 이러한 공간도 항상 고려하는 것이 가장 좋습니다.

String imageName = "picture1  . jpg";
String [] imageNameArray = imageName.split("\\s*.\\s*");
    for(int i =0; i< imageNameArray.length ; i++)
    {
       system.out.println(imageNameArray[i]);
    }

여기서 \\ s *는 공백을 고려하여 필요한 분할 문자열 만 제공합니다.


문장이 ". "로 끝나는 지 확인하려면 패턴 끝에 [\. \ ] $를 추가 해야합니다.


JGrasp에서 몇 가지 기본 배열을 수행하고 char [] [] 배열에 대한 접근 자 메서드를 사용하여 단일 점을 배치하기 위해 ( '.')을 사용한다는 것을 알았습니다.

참고 : https://stackoverflow.com/questions/3674930/java-regex-meta-character-and-ordinary-dot

반응형