// 정규표현식으로 제거
String.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>","");
// 한줄로 할려면 아래 추가
String.replaceAll("("\r|\n| ","");
.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>","").replaceAll("\r|\n| ","")
replaceFirst() / replaceAll() 메소드(함수)로 문자열을 치환할 때, 대소문자 구분없이 바꾸려면
정규식의 앞 부분에 (?i) 라는 옵션을 넣어주면 됩니다. 물음표+소문자i(아이)입니다.
public class Foo {
public static void main(String[] args) {
String s = "Abc abC ABC abc"; // 원본 문자열
String s2;
System.out.println("원본: " + s);
System.out.println(); // 줄바꿈
s2 = s.replaceFirst("(?i)abc", "ZZZ");
System.out.println("치환(1): " + s2);
s2 = s.replaceAll("(?i)abc", "ZZZ");
System.out.println("치환(2): " + s2);
}
}
자바를 비롯한 C계열의 언어에서, 백슬래쉬(\) 문자는 이스케이프 문자이므로, 그 자체를 직접 표현하기 곤란합니다.
이때는 백슬래쉬(Backslash)를 이중으로 해주면 해결됩니다. 즉 "\" 를 "\\" 이렇게 하는 것입니다.
그리고 자바 정규식에서, 백슬래쉬 1개를 표현하기 위해서는 백슬래시를 4개 적어주면 됩니다.
아래 예제에서 replaceAll() 메소드(함수)는, 정규식을 파라미터로 입력받기에 4개로 표현했습니다.
public class Foo {
public static void main(String[] args) {
String s = "자장면\\짬뽕"; // 원본 문자열 정의
String s2;
System.out.println(s); // 원본 문자열 출력: 자장면\짬뽕
/////////////////////////////////////////
// 백슬래쉬 문자열 치환
/////////////////////////////////////////
s2 = s.replace("\\", "ABC");
System.out.println(s2); // 출력 결과: 자장면ABC짬뽕
s2 = s.replaceAll("\\\\", "ZZZ");
System.out.println(s2); // 출력 결과: 자장면ZZZ짬뽕
}
}
어떤 문자열 속에, 특정 문자열이 포함되어 있는지 찾으려면,
String 클래스의 matches() 라는 메소드(함수)를 사용하여 찾을 수 있습니다. 정규식을 입력받습니다.
import java.io.*;
import java.util.regex.*;
class Foo {
public static void main(String[] args) {
String s = "abcdoooooefghi";
try {
if (s.matches(".*ooo.*"))
System.out.format("매치되었습니다.%n");
else
System.out.format("그런 문자열이 없습니다.%n");
} catch (PatternSyntaxException e) { // 정규식에 에러가 있다면
System.err.println(e);
System.exit(1);
}
}
}
replaceAll에서 정규표현식 특수문자 취급 자바
1. []으로 싸주면 문자자체로 인식하는 것들.
* ⇒ [*]
+ ⇒ [+]
$ ⇒ [$]
| ⇒ [|]
? ⇒ [?]
2. \\를 붙여줘야 하는 것들.
( ⇒ \\(
) ⇒ \\)
{ ⇒ \\{
} ⇒ \\}
^ ⇒ \\^
[ ⇒ \\[
] ⇒ \\]
3. 자바의 특수문자는 \을 쓴다.
" ⇒ \"
4. 나머지 부호들은 괜찮은 듯 하다.
확인된 것.
! # % & @ ` : ; - . < > , ~ '
ex ) 위에 놈들 다 지워 보자. - 4번 제외
String c = "?$(){}*+^|[]";
c = c.replaceAll("[?][$]\\(\\)\\{\\}[*][+]\\^[|]\\[\\]", "");
'JAVA' 카테고리의 다른 글
자바 xss필터 (0) | 2015.03.09 |
---|---|
자바 날짜 함수 계산 (0) | 2015.03.09 |
서버 아이피 알아 오기 (0) | 2015.03.05 |
rs 개수 가지고 오기 (0) | 2015.03.05 |
resultset생성시 인자값을 이용한 설정 (0) | 2015.03.05 |