String 클래스 matches 메서드
String 클래스에 있는 matches 메서드는, 정규표현식으로 글자의 포함여부를 체크할 수 있습니다.
public class MatchesMethod { public class MatchesMethod { public static void main(String[] args){ String testData = "문자열에 img라는 글자가 포함되어있을까요?ㅋㅋ"; System.out.println(testData.matches(".*img.*")); } }
System.out.println(testData.matches(".*img.*"));
testData부분이 비교할 데이터이고, matches 인자로 정규표현식 패턴이 옵니다.
(예제가 적절했는지는 모르겠네요.ㅋㅋ html 코드내에서 img 태그가 있는지 체크하는 상황이 생각이 났습니다.)
아래는 matches 인자로 표현식입니다.
표현식 | 설명 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나있음 |
[] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다. |
{} | 횟수 또는 범위를 나타낸다. |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
\ | 정규표현식 역슬래시(\)는 확장 문자 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미 |
(?i) | 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 |
참고로,
표현식 표를 보고 matches 인자로 들어간 패턴을
testData.matches("*img*")
로 생각하실 수 있겠지만.. 위와 같이 하면 아래와 같은 오류에 직면합니다.
*, ? 와 같은 문자들은 meta data라서 그냥 쓸수가 없다고 하네요.
앞에 . 을 붙여주도롭 합시다.
그리고 추가로, 대소문자 구분을 무시하는 표현식도 있습니다.
(?i) 입니다.
testData.matches("(?i)*img*")
와 같이 패턴을 넣어주면 testData에 img 가 아니라 IMG 라는 글자가 들어가도 true를 뱉어내게 됩니다.
'JAVA,JSP' 카테고리의 다른 글
Jad 설치 및 이클립스에 추가하기 (0) | 2016.06.13 |
---|---|
System.out 출력 포맷 (0) | 2016.06.10 |
이미지 태그 src 값 추출 (0) | 2015.06.02 |
JSP 메일 보내기 (8) | 2015.05.22 |
[Java]Eclipse 설치 및 기본설정 (0) | 2015.04.04 |