| 양쪽 이전 판
이전 판
다음 판
|
이전 판
|
wiki:java:string:replaceall [2020/04/14 14:36] dhan |
wiki:java:string:replaceall [2023/01/13 18:44] (현재) |
| ===== 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 |
| |
| ===== Case study ===== | ===== Case study ===== |
| 이미지 소스의 base64문자열 제거 (<img src="data-image/png;base64, ......."/> -> <img src=""/>) | 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 html> | |
| (http(s)?://([^ ]*)) => $1 | |
| (s) => $2 | |
| ([^ ]*) => $3 | |
| </code> | </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://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html|Pattern, Regular Experssion]] |
| * [[https://regexr.com/|Regular 온라인 Test]] | * [[https://regexr.com/|Regular 온라인 Test]] |
| | * [[http://coolx.net/cboard/develop/446|replaceAll에서 정규표현식 특수문자 취급 자바]] |
| |
| ===== Tip ===== | ===== Tip ===== |
| |
| ===== Troubleshooting ===== | ===== Troubleshooting ===== |
| |
| |
| {{tag>주레피 replaceAll replace}} | {{tag>주레피 replaceAll replace}} |