• 締切済み

初めて投稿します。

初めて投稿します。 JavaでHTMLソースコードからリンクタグ<a href="~~"></a>と文字列(テキスト)だけ取得したいのです(<a href="~~">から</a>タグの文字列を含む)。 Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL); Matcher matcher = pattern.matcher(<ソースコード>); とするとタグ全てが除去されてしまうので困っています。 Pattern.compileの引数に入れる正規表現を教えてください。 よろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

こんな感じじゃダメですか? <a href=".*">.*</a>

関連するQ&A

  • 1文字以上のアルファベットが入力されているかチェックするには

    正規表現で1文字以上のアルファベットが含まれているかを確認する事はできますか? 1234567890 → × a123456789 → ○ 1234a56789 → ○ 123456789a → ○ a123b4567c → ○ import java.util.regex.*; Pattern pattern = Pattern.compile("?a-zA-Z{1,}?"); Matcher matcher = pattern.matcher("文字列"); if(matcher.matches()==false){   return "NG"; } アドバイス宜しくお願いします。

    • ベストアンサー
    • Java
  • Java正規表現-"ある文字列"を含まない文字列

    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タグがヒットしています。

    • ベストアンサー
    • Java
  • VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています

    VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。 正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。 タグごと抽出する方法でも構わないので教えてください。 例えば <a href="www.yahoo.com△">○○○</a>   ・・・<1> ※△は(www.yahoo.com)+(半角数字1文字) ※○○○は1文字以上の全角文字 このようなパターンの文字列(<1>を丸ごと)を抜き出すには どのような正規表現を書けばよいでしょうか? 単に<a href ではじまって </a>  で終わる文字列であれば <a href.*</a> で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので ぜひ実現させたいと思っています。宜しくお願いします。

  • PatternSyntaxException

    こんにちは。 ある文字列の\マークを/に置き換えるために、 Pattern p = Pattern.compile("\\"); Matcher m = p.matcher("文字列"); String replaced = m.replaceAll("/"); としているのですが、 1行目でなぜかPatternSyntaxExceptionがスローされます。何かおかしいのでしょうか? ちなみにEclipseを用いてコーディングしています。

    • ベストアンサー
    • Java
  • URL\正規表現@java

    perlメモさん?にPerlでのURLの正規表現はあるのですが Javaで使いたいと思います。 Pattern pattern = Pattern.compile("正規表現"); Matcher matcher = pattern.matcher(String); のステートメントを使う方法をご存知な方おられませんか? Perlメモさん?の正規表現をエディタにコピペしても 不正なエスケープエラー?がでてだめでした。 (http Urlのごちゃごちゃした奴の下から二番目) (「\b(?:」で始まる奴です) なのでエディタに貼り付けて\を\\に置き換えたものを 正規表現の部分にしたところコンパイルはとおりましたが、 正確にマッチしてくれませんでした。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 外部ファイルに書いた正規表現を読み込んでマッチさせたい

    趣味の延長でJavaの勉強を始めたプログラミング初心者です。 開発環境は All-In-One Eclipse 3.0.1 + PropertiesEditor を使用しています。 ・やりたいこと 一つのフォルダに収められた、サイズが不定で、連番のファイル名が付けられた数百のHTMLファイルから、 外部ファイルに書いた正規表現を用いて複数の文字列を抜き出し、txtファイルにタブ区切りで書き込みたい。 ・質問 1. 「不正なインデックスを使って配列がアクセスされたことを示し」ているエラーの解決方法を教えて頂きたいです。   ソースコードの Pattern _d = Pattern.compile(_i); に正規表現を直接書くとエラーは出ませんが、   抜き出した文字列がregexp.propertiesのキーの数だけ書き込まれてしまいます。 2. 対象のフォルダはzip形式で圧縮してありますが、解凍後のサイズは数百MBもあり、これを複数処理・保存する必要があります。   そのためzip形式で圧縮したものに対して解凍せずに処理を行いたいのですが、その様な方法はあればご教示願います。 ・ソースコードと外部ファイル http://uploadr.net/file/c8f927ac3c お手数ですがこちらをご覧下さい。 ・エラー表示 Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1 at java.util.regex.Matcher.group(Unknown Source) at java.util.regex.Matcher.appendReplacement(Unknown Source) at java.util.regex.Matcher.replaceAll(Unknown Source) at goo.FileReadAndSearch.RaS(FileReadAndSearch.java:40) at goo.FileReadAndSearch.main(FileReadAndSearch.java:13) 以上です。どうぞよろしくお願い致します。

    • ベストアンサー
    • Java
  • substringで文字を分割

    全角80桁の文字列を全角空白を利用して4分割したいのですが 下記にご質問内容を記載します。 String str = new String(住所漢字); Matcher j = pattern2.matcher(住所漢字); Pattern pattern2 = Pattern.compile("^.{1,20} ");で 文字列の先頭から始まって半角空白で終わる最大21文字 (最後の全角空白を含む)にマッチさせた文字列に Matcher j = pattern2.matcher(住所漢字); while(j.find()) { 正規表現で抜き出した文字列の文字カウントをチェック int mojiLength = i.group().length(); String iNewString = tmp.substring(mojiLength); out.print(j.group()+","+iNewString); として、正規表現でマッチさせた文字列以降を substringで抜き出したのですが それ以降の文字列も同じようにして substringで抜き出した20文字以降の文字列に 先に設定した正規表現を利用して分割して カンマ区切の4分割にしたいのですが この先の方法が分からず色々調べている最中です。 すいませんがぜひアドバイスお願いします。

    • ベストアンサー
    • Java
  • 正規表現の検索について

    正規表現のエスケープしなければいけない文字が文字列に含まれているかどうかをチェックしたいのですがうまくいきません。 今は、下記のようにしてnoと表示されます。 よろしくお願いします。 String str ="(1)test"; Pattern p; Matcher m; p = Pattern.compile("\\(1\\)"); m = p.matcher(str); if(m.matches()) { System.out.println("ok"); }else{ System.out.println("no"); }

    • ベストアンサー
    • Java
  • 日本語の正規化表現

    urizakaです J2SDK1.4から正規表現が標準についたと知り、さっそくカタカナエラーチェックのためのBeanを作ってみたのですが、どんな文字列(カタカナ、英語、ひらがな…etc)と比較させても「False」しか戻ってこないという状態で、うまく行きません。 /** *カタカナエラーチェック:カタカナは使われているかどうか? *@param s 調べる **/ public boolean checkKkana(String s){ Pattern pattern = Pattern.compile("[^アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲン]"); Matcher matcher = pattern.matcher(s); boolean check = matcher.matches(); return check; } } もしかすると、日本語を処理するのには特別な方法が必要なのでしょうか? すみませんが、よろしくお願いします

    • ベストアンサー
    • Java
  • Javaの正規表現を使った画像URLの自動リンクができません

    Java(version 1.5.0_05)の正規表現を使った画像URLの自動リンクで 行き詰っています。 通常のリンクタグは pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:&?,=#]+",Pattern.CASE_INSENSITIVE); でうまく変換できているのですが、 画像の場合、 pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:&?,=#]+(jpg|jpeg|gif|png|bmp)",Pattern.CASE_INSENSITIVE); としてもマッチせず、 変換ができません。 正規表現が間違えているのは分かっているのですが、 どこをどう変えたらよいのか教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう