2010. 2. 8. 10:38
정규표현식을 이용해서 img 태그의 src 추출하기~ 그거/Java2010. 2. 8. 10:38
HTML 소스에서 <img .... > 태그만 정규표현식을 이용해서 추출할 수 있다~~
Pattern.compile("<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>");
위의 패턴을 이용하면 된다는..
하나씩 보자.
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
<img 태그를 찾는다.( <img......... )
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>가 아닌 모든 것들..(<img height=100 width=50 ......)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
src= 속성을 찾는다. (<img height=100 width=50 src=.....)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
"나 '가 0 또는 1번 이상 나타나고, (<img height=100 width=50 src='......)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>나 ", '가 1 또는 그 이상 나타나며, (<img height=100 width=50 src='10.gif......)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
"나 '가 0 또는 1번 이상 나타나고, (<img height=100 width=50 src='10.gif'......)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
>가 아닌 모든 문자들.. (<img height=100 width=50 src='10.gif' alt='10'......)
<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>
> 로 끝나는 (<img height=100 width=50 src='10.gif' alt='10'>)
문자열 이라는거죠~
<img height=100 width=50 src='10.gif' alt='10'>
아래 예제를 돌려보자~~
package cis.jcaps.app;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest
{
final static Pattern nonValidPattern = Pattern.compile("<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>");
final static File indexFile = new File("index.html");
public static void main(String[] args) {
List<String> list = null;
String str = null;
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try {
System.out.println(indexFile.exists());
br = new BufferedReader(new FileReader(indexFile));
while( (str = br.readLine()) != null ) {
sb.append(str);
}
} catch(Exception e) {
e.printStackTrace();
}
list = stripNonValidXMLCharacters(sb.toString());
for(String tmp : list ) {
System.out.println(tmp);
}
}
public static List<String> stripNonValidXMLCharacters(String str) {
List<String> result = new ArrayList<String>();
StringBuffer out = new StringBuffer();
Matcher matcher = nonValidPattern.matcher(str);
while (matcher.find()) {
result.add(matcher.group(1));
}
matcher.appendTail(out);
return result;
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternTest
{
final static Pattern nonValidPattern = Pattern.compile("<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>");
final static File indexFile = new File("index.html");
public static void main(String[] args) {
List<String> list = null;
String str = null;
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try {
System.out.println(indexFile.exists());
br = new BufferedReader(new FileReader(indexFile));
while( (str = br.readLine()) != null ) {
sb.append(str);
}
} catch(Exception e) {
e.printStackTrace();
}
list = stripNonValidXMLCharacters(sb.toString());
for(String tmp : list ) {
System.out.println(tmp);
}
}
public static List<String> stripNonValidXMLCharacters(String str) {
List<String> result = new ArrayList<String>();
StringBuffer out = new StringBuffer();
Matcher matcher = nonValidPattern.matcher(str);
while (matcher.find()) {
result.add(matcher.group(1));
}
matcher.appendTail(out);
return result;
}
}
'그거 > Java' 카테고리의 다른 글
Visual VM을 이용해서 모니터링하기~ (0) | 2010.03.05 |
---|---|
properties 파일 로딩하기 (0) | 2010.02.19 |
XML 특수 문자 파싱 오류 확인 (0) | 2010.01.29 |
[Java] Inner Class에 이런 것이 있었군요... (0) | 2009.09.29 |
[Java] Jar 파일의 Manifest.MF 파일에서 정보 추출하기. (0) | 2009.09.16 |