사용자 도구

사이트 도구


wiki:java:string:replaceall

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
wiki:java:string:replaceall [2020/04/14 12:33]
dhan
wiki:java:string:replaceall [2023/01/13 18:44] (현재)
줄 1: 줄 1:
 ===== replaceAll, replace ===== ===== replaceAll, replace =====
 <WRAP left notice 80%> <WRAP left notice 80%>
-  * description : 주레피 +  * description : 정규표식을 사용한 replaceall 활용 연구
   * author      : 주레피   * author      : 주레피
   * email       : dhan@repia.com   * email       : dhan@repia.com
줄 9: 줄 9:
  
 ===== Case study ===== ===== Case study =====
-<code html>이미지 소스의 base64문자열 제거 (<img src="data-image/png;base64, ......."/> -> <img src=""/>)</code>+1. 이미지 소스의 base64문자열 제거 (<img src="data-image/png;base64, ......."/> -> <img src=""/>)
 <code java> <code java>
 String testStr="<img src=\"data:image/png;base64,iVBORw0KGgo ... 5XTk8evT\">"; String testStr="<img src=\"data:image/png;base64,iVBORw0KGgo ... 5XTk8evT\">";
 System.out.println(testStr.replaceAll("src=\"data:image[^\"]*\"", "src=\"\"")); System.out.println(testStr.replaceAll("src=\"data:image[^\"]*\"", "src=\"\""));
 </code> </code>
- +\\ 
-http://www.repia.com -> <a href="http://www.repia.com" target="blank">www.repia.com</a>(링크추가)+2. http://www.repia.com -> <a href="http://www.repia.com" target="blank">www.repia.com</a>(링크추가) \\
 <code java> <code java>
 String testStr="http://www.repia.com "; String testStr="http://www.repia.com ";
 System.out.println(testStr.replaceAll("(http(s)?://([^ ]*))", "<a href=\"$1\" target=\"blank\">$3</a>")); System.out.println(testStr.replaceAll("(http(s)?://([^ ]*))", "<a href=\"$1\" target=\"blank\">$3</a>"));
 </code> </code>
 +> 괄호 순서대로 \\ (http(s)?:%%//%%([^ ]*)) => $1 \\ (s) => $2 \\ ([^ ]*) => $3
 +<code java>
 +// Source
 +public static void main(String[] args)
 +{
 +    String[] linkHostList = { "http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx="
 +                            , "https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn="
 +                            , "https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq=" };
 +
 +    for(String linkHost: linkHostList) {
 +        System.out.printf("%s -> %s\n", linkHost, linkHost.replaceAll("(http(s)?://([^/]*)(/.*))", "$3"));
 +    }
 +}
 +// Output <= $3
 +http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx= -> www.sit.re.kr
 +https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn= -> scienceon.kisti.re.kr
 +https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq= -> www.kosen21.org
 +
 +// Output <= $1
 +http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx= -> http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx=
 +https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn= -> https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn=
 +https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq= -> https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq=
 +
 +// Output <= $2
 +http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx= -> 
 +https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn= -> s
 +https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq= -> s
 +
 +// Output <= $4
 +http://www.sit.re.kr/kr/board/result/boardView.do?bbsIdx= -> /kr/board/result/boardView.do?bbsIdx=
 +https://scienceon.kisti.re.kr/srch/selectPORSrchTrend.do?cn= -> /srch/selectPORSrchTrend.do?cn=
 +https://www.kosen21.org/info/kosenReport/reportView.do?articleSeq= -> /info/kosenReport/reportView.do?articleSeq=
 +
 +</code>
 +
 +\\
 +3. 한줄로 간단하게 ltrim, rtrim
 +<code java>
 +String testStr=str.replaceAll("^\\s+",, ""); //ltrim
 +String testStr=str.replaceAll("\\s+$",, ""); //rtrim
 +</code>
 +> '^' mean 처음부터 매칭 \\ '$' mean 라인마지막 매칭 \\ %%\\%%s+ mean white space 
 +\\
 +4. 특수 기호 사용하기  \\
 +4.1 []로 싸주면 문자자체를 인식하는 것
 +<code java>
 +* => [*]
 ++ => [+]
 +$ => [$]
 +| => [|]
 +? => [?]
 +</code>
 +4.2 \\를 붙여줘야 하는 것
 +<code java>
 +( -> \\(
 +) -> \\)
 +{ -> \\{
 +} -> \\}
 +^ -> \\^
 +[ -> \\[
 +] -> \\]
 +</code>
 +4.3 나머지 기호 !#%&@':;-.<>,~` 는 괜찮은 것 같다. \\
 +<code java>
 +String c = "?$(){}*+^|[]";
 +c = c.replaceAll("[?][$]\\(\\)\\{\\}[*][+]\\^[|]\\[\\]", "");
 +</code>
 +
 +
  
 ===== Ref ===== ===== Ref =====
 +  * [[https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html|Pattern, Regular Experssion]]
 +  * [[https://regexr.com/|Regular 온라인 Test]]
 +  * [[http://coolx.net/cboard/develop/446|replaceAll에서 정규표현식 특수문자 취급 자바]]
  
 ===== Tip ===== ===== Tip =====
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
- 
  
 {{tag>주레피 replaceAll replace}} {{tag>주레피 replaceAll replace}}
/volume1/web/dokuwiki/data/attic/wiki/java/string/replaceall.1586835190.txt.gz · 마지막으로 수정됨: 2022/03/10 19:52 (바깥 편집)