Java에서 앞뒤로 연속적인 줄 바꿈과 탭 제거

3330 단어 자바정규식
추가
한 글자라면 일치하지 않는 것을 깨닫습니다."^[\t\n]*([^\t\n]+(.|\\s)*[^\t\n]+)[\t\n]*$" 부터"^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$" 로 수정했다.
첫 번째 플러스가 별표가되었습니다.

싫어하는 정규식.
전후 이외의 개행이나 탭은 그대로 두면 이것이 포인트.
엄청 빠져서 기사로 할 때.

    public static String trimNewline(String str) {
        String regex = "^[\t\n]*([^\t\n]*(.|\\s)*[^\t\n]+)[\t\n]*$";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        if (m.find()) {
            return m.group(1);
        } else { // 「空文字」や「タブや改行だけで構成された文字列」はマッチせずここにくる
            return "";
        }
    }


자바 정규식을 살펴보면
"."는 모든 문자와 일치합니다.
라고만 써 있는 것뿐입니다만, 실은,
개행 이외의 임의의 캐릭터 라인
이었기 때문에, 엄청 빠졌습니다.
System.out.println(trimNewline("\t\n\t\nhoge\t\n\t\n")); // hoge
System.out.println(trimNewline("\t\n\t\nhoge")); // hoge
System.out.println(trimNewline("hoge\t\n\t\n")); // hoge


또, 도중에 개행이나 탭이 들어간,"\t\n\n\n\t\tho\t\t\nhoge\nge\t\n\t\n"이쪽도,


무사히 전후만 제거되었습니다.

좋은 웹페이지 즐겨찾기