※ ChatGPTを利用し、要約された質問です(原文:Java正規表現-"ある文字列"を含まない文字列)
Java正規表現: HTMLタグ以外の文字列を抽出
このQ&Aのポイント
Javaの正規表現を使用して、HTMLタグ以外の文字列を抽出する方法について教えてください。
現在、指定した正規表現を使用してHTMLタグを抽出していますが、HTMLタグ以外にもヒットさせたいです。
HTMLタグの否定を表す正規表現についても教えてください。
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タグがヒットしています。
お礼
ご回答ありがとうございます。 実は、質問文の正規表現は間違っていて、タグだけにヒットしていませんでした。 tanaka12jpのアドバイスどおりに全て""置き換えると、タグ以外の文字が連結してしまうので、困ります。 せめて、タグ以外の文字列間に「,」があれば、splitでもできるのですが、、、 いまたまたま、"(>)([^<>]+)(<)"のgroup(2)でタグ以外の文字を抽出できる正規表現が作れました。いま、この正規表現で問題がないか、色々なHTMLのソースを使って試してみます。 ありがとうございました。