Flick
24-03-2008, 21:52
Здравствуйте, встала задача, написать класс , который будет парсить html страницу со, скорее всего кривым кодом ( то есть парсеры типа DOM, я так мыслю отсекаются ) ,
задача, вытянуть из документа все урлы.
но вот проблема, самым очевидным решением принял поиск по совпадению с регулярным выражением ( NB у меня опыта практически ноль )
и когда хочу пропарсить с помощью java.util.regexp - не получается составить выражение, а при помощи org.apache.oro.text.regex. получаю java.lang.ArrayIndexOutOfBoundsException,
Люди добрые не пагубите помогите найти оптимальный выход их этой ситуации...
вот что наваял
import org.apache.oro.text.awk.AwkCompiler;
import org.apache.oro.text.awk.AwkMatcher;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
public class Analyzer2 {
public ArrayList<String> analyze(String html_body) {
ArrayList<String> al = null;
String regex = "(http://)*[w]{3}*.*[a-zA-Z0-9].+[a-zA-Z]{1,3}";
PatternCompiler compiler = new AwkCompiler();
Pattern pattern = null;
try {
pattern = compiler
.compile(regex, AwkCompiler.CASE_INSENSITIVE_MASK);
} catch (MalformedPatternException mpe) {
mpe.printStackTrace();
}
AwkMatcher matcher = new AwkMatcher();
while (matcher.contains(html_body, pattern)) {
MatchResult result = matcher.getMatch();
la.add(result.toString());
}
return al;
}
}
подскажите что не так и как сделать что бы это барахло заработало..?
задача, вытянуть из документа все урлы.
но вот проблема, самым очевидным решением принял поиск по совпадению с регулярным выражением ( NB у меня опыта практически ноль )
и когда хочу пропарсить с помощью java.util.regexp - не получается составить выражение, а при помощи org.apache.oro.text.regex. получаю java.lang.ArrayIndexOutOfBoundsException,
Люди добрые не пагубите помогите найти оптимальный выход их этой ситуации...
вот что наваял
import org.apache.oro.text.awk.AwkCompiler;
import org.apache.oro.text.awk.AwkMatcher;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
public class Analyzer2 {
public ArrayList<String> analyze(String html_body) {
ArrayList<String> al = null;
String regex = "(http://)*[w]{3}*.*[a-zA-Z0-9].+[a-zA-Z]{1,3}";
PatternCompiler compiler = new AwkCompiler();
Pattern pattern = null;
try {
pattern = compiler
.compile(regex, AwkCompiler.CASE_INSENSITIVE_MASK);
} catch (MalformedPatternException mpe) {
mpe.printStackTrace();
}
AwkMatcher matcher = new AwkMatcher();
while (matcher.contains(html_body, pattern)) {
MatchResult result = matcher.getMatch();
la.add(result.toString());
}
return al;
}
}
подскажите что не так и как сделать что бы это барахло заработало..?