異なるタイプの HTML タグの間でテキストを抽出する必要がある正規表現を探しています。
例:
<span>Span 1</span>
- O/p:スパン 1
<div onclick="callMe()">Span 2</div>
- O/p:スパン 2
<a href="#">HyperText</a>
- O/p:ハイパーテキスト
ここ<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>
からこの特定の作品を見つけましたが、これは機能していません。
あなたのコメントは、正規表現文字列のバックスラッシュをエスケープすることを怠ったことを示しています。
そして、小文字を一致させたい場合はa-z
、文字クラスに追加するか、使用しますPattern.CASE_INSENSITIVE
(または(?i)
正規表現の先頭に追加します)
"<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>"
タグの内容に改行が含まれている可能性がある場合は、正規表現の先頭に使用Pattern.DOTALL
または追加(?s)
して dotall/singleline モードをオンにします。
これはあなたのニーズに合うはずです:
<([a-zA-Z]+).*?>(.*?)</\\1>
最初のグループにはタグ名が含まれ、2 番目のグループにはその間の値が含まれます。
非常に具体的な方法:
(<span>|<a href="#">|<div onclick="callMe\(\)">)(.*)(</span>|</a>|</div>)
しかし、ええ、これはこれらの3つの例でのみ機能します。HTML パーサーを使用する必要があります。