일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AJAX
- 설정
- jpa
- STS
- MySQL
- error
- Python
- git
- 오픈소스
- myBatis
- ubuntu
- Spring Boot
- Thymeleaf
- Tomcat
- Docker
- IntelliJ
- 문서
- Core Java
- JDBC
- Source
- Exception
- Open Source
- maven
- spring
- JavaScript
- PostgreSQL
- Eclipse
- SpringBoot
- MSSQL
- oracle
- Today
- Total
헤르메스 LIFE
[정규식] Java에서의 정규식 정리 본문
정규식 특수문자 처리
1. []으로 싸줘야하는 문자
* → [*]
+ → [+]
$ → [$]
| → [|]
2.추가 해야하는 문자
( → \\(
) → \\)
{ → \\{
} → \\}
^ → \\^
[ → \\[
] → \\]
3. 자바의 특수문자는 \을 쓴다.
" → \"
4.무관한 특수 문자
! # % & @ ` : ; - . < > , ~ '
Pattern 플래그
Pattern.CANON_EQ
→ Match 시에 두 문자가 반영된다. 예를 들어, 수식 ‘\u003F’ 는 ‘?’ 와 match 된다.
Pattern.CASE_INSENSTIVE (?i)
→ 대소문자 구분 없이 패턴을 match시킨다. US-ASCII 코드의 문자를 기준하지만, 이것과 함께 UNICODE_CASE 플래그를 지정하면 유니코드의 대소문자 구분 없는 match 가 가능하다.
Pattern.COMMENTS (?x)
→ Whitespace가 무시되고, #으로 시작하는 주석이 무시된다 (라인의 끝까지).
Pattern.DOTALL (?s)
→ 수식 ‘.’ 이 모든 문자와 match 되며, 한 라인의 끝을 나타내는 ‘\n’ 도 match 에 포함된다.
Pattern.MULTILINE (?m)
→ 수식 ‘^’ 는 라인의 시작과, ‘$’ 는 라인의 끝과 match 된다. 또한 ‘^’ 는 입력 문자열의 시작과, ‘$’ 는 입력 문자열의 끝과 match 된다. 원래 이 수식들은 입력 문자열 전체의 시작과 끝하고만 match 된다.
Pattern.UNICODE_CASE (?u)
→ 유니 코드를 ㅣ준으로 대소문자 구분 없이 match 시킨다. 대소문자 구분 없이 match하는 것은 원래 US_ASCII 문자 코드를 기준으로 한다.
Pattert.UNIX_LINES (?d)
→ 수식 ‘.’ 과 ‘^’ 및 ‘$’ 의 match 시에 한 라인의 끝을 의미하는 ‘\n’(newline) 만 인식된다.
// script 처리
Pattern script = Pattern.compile("<(no)?script[^>]*>.*?</(no)?script>",Pattern.DOTALL);
mat = script.matcher(str);
str = mat.replaceAll("");
// style 처리
Pattern style = Pattern.compile("<style[^>]*>.*</style>",Pattern.DOTALL);
mat = style.matcher(str);
str = mat.replaceAll("");
// tag 처리
Pattern tag = Pattern.compile("<(\"[^\"]*\"|\'[^\']*\'|[^\'\">])*>");
mat = tag.matcher(str);
str = mat.replaceAll("");
// ntag 처리
Pattern ntag = Pattern.compile("<\\w+\\s+[^<]*\\s*>");
mat = ntag.matcher(str);
str = mat.replaceAll("");
// entity ref 처리
Pattern Eentity = Pattern.compile("&[^;]+;");
mat = Eentity.matcher(str);
str = mat.replaceAll("");
// whitespace 처리
Pattern wspace = Pattern.compile("\\s\\s+");
mat = wspace.matcher(str);
str = mat.replaceAll("");
'Core Java' 카테고리의 다른 글
[날짜] LocalDate, Calendar, Date 날짜 가져오는 방법 (0) | 2020.12.15 |
---|---|
How to Validate XML using Java (0) | 2016.04.04 |
[Applet] Java Applet Tutorial (0) | 2013.07.24 |
Web 개발환경 설정 (0) | 2013.06.24 |
[Core Java] Map or List에 값이 포함되어 있는지 확인 (0) | 2012.07.03 |