내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
java:regex
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== Java Regular Expression 정규 표현식 ====== * [[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html|Pattern (Java SE 17 & JDK 17)]] ===== Pattern과 Matcher ===== Pattern 객체는 Thread-Safe하지만, Matcher 객체는 Thread-Safe 하지 않다. 멀티 쓰레드 환경에서 사용시 Matcher 객체를 주의해서 사용해야 한다. [[http://www.javamex.com/tutorials/regular%5Fexpressions/thread%5Fsafety.shtml|Thread-safety with regular expressions in Java]] ===== Matcher.appendReplacement() 와 역슬래시(\,backslash) 그리고 $(dolar sign) 문제 ===== [[http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html#appendReplacement(java.lang.StringBuffer, java.lang.String)|Matcher.appendReplacement()]]를 이용해서 ''matcher.appendReplacement(sb, "역슬래시 혹은 $가 존재하는 값");''을 실행하면 오류가 발생할 수 있다. 이유는 appendRaplacement() 메소드가 역슬래시와 $를 정규표현식의 특수문자로 취급하기 때문이다. 이와 관련해서는 [[http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html#appendReplacement(java.lang.StringBuffer, java.lang.String)|Matcher.appendReplacement()]] javadoc 문서에도 언급이 돼 있다. 이문제를 해결하려면, 다음과 같이 역슬래시와 $를 escape해줘야 한다. <code java> String value = valueToReplace.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\$"); matcher.appendReplacement(sb, value); </code> ===== 새줄기호 기준으로 문자열 자르기 ===== [[http://stackoverflow.com/questions/454908/split-java-string-by-new-line|regex - Split Java String by New Line]] <code java> String[] splited = str.split("[\\r\\n]+"); // 빈 줄은 모두 사라진다. </code> Java 8 부터는 <code java> String[] splited = str.split("\\R"); // 마지막 빈 줄 삭제됨 // split("\\R",-1) // 마지막 빈 줄 남겨두기 // split("\\R+") // 빈 줄 삭제 </code> ===== Greedy/Non-Greedy ===== * [[https://docs.oracle.com/javase/tutorial/essential/regex/quant.html|Quantifiers (The Java™ Tutorials > Essential Classes > Regular Expressions)]] * [[https://examples.javacodegeeks.com/core-java/util/regex/greedy-and-non-greedy-reg-ex-matching/|Greedy and non-greedy Reg Ex matching]]
java/regex.txt
· 마지막으로 수정됨: 2022/05/16 15:27 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로