電子書籍の厳選無料作品が豊富!

Javaの正規表現で、HTMLタグ以外の文字列を抽出しようとしています。

HTMLタグはの正規表現は"(</?.*>)"のように表しました。これの否定をしたいのですが、方法を教えて下さい。HTMLタグ以外にヒットさせたいです。

一応、現段階のソースを載せます。
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class HTMLInnerGetter {
public static void main(String[] args){
String regex = "(</?.*>)";
String target = "<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>";
ArrayList<String> innerHTMLs = new ArrayList<String>();

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(target);

while(matcher.find()){
innerHTMLs.add(matcher.group(1));
}
System.out.println(innerHTMLs);
}
}

出力結果
[<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>]

※否定できなかったので、HTMLタグがヒットしています。

A 回答 (1件)

正規表現でHTMLタグを抜き出せるならその部分を削除すればいいのでは。


http://www.javadrive.jp/regex/replace/index1.html
のように正規表現でマッチした部分を""(何もなし)に変換するのはどうでしょうか。

参考URL:http://www.javadrive.jp/regex/replace/index1.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

実は、質問文の正規表現は間違っていて、タグだけにヒットしていませんでした。

tanaka12jpのアドバイスどおりに全て""置き換えると、タグ以外の文字が連結してしまうので、困ります。
せめて、タグ以外の文字列間に「,」があれば、splitでもできるのですが、、、

いまたまたま、"(>)([^<>]+)(<)"のgroup(2)でタグ以外の文字を抽出できる正規表現が作れました。いま、この正規表現で問題がないか、色々なHTMLのソースを使って試してみます。

ありがとうございました。

お礼日時:2014/01/06 13:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!