perlメモさん?にPerlでのURLの正規表現はあるのですが
Javaで使いたいと思います。
Pattern pattern = Pattern.compile("正規表現");
Matcher matcher = pattern.matcher(String);
のステートメントを使う方法をご存知な方おられませんか?
Perlメモさん?の正規表現をエディタにコピペしても
不正なエスケープエラー?がでてだめでした。
(http Urlのごちゃごちゃした奴の下から二番目)
(「\b(?:」で始まる奴です)
なのでエディタに貼り付けて\を\\に置き換えたものを
正規表現の部分にしたところコンパイルはとおりましたが、
正確にマッチしてくれませんでした。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
No.1です。
もう解決した、とのことなので、
アレなのだけど。
yahooのトップページ
http://www.yahoo.co.jp/
のHTMLファイルにおいて、下のプログラムを試したところ、
100個ぐらいのURLアドレスがマッチしたぞ。
一応、報告ね。
-------------------------------------
(※正規表現部分は省略)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;
public class Reg {
void test() {
String a = "正規表現";//※省略
Pattern pattern = Pattern.compile(a);
String b = load("index.html");//引数で指定した
//HTMLファイルの中身をまるごとStringにする
Matcher matcher = pattern.matcher(b);
int count = 0;
while (matcher.find()) {
System.out.println(count + ": " + matcher.group());
count++;
}
}
/*HTMLファイルの中身をまるごとStringにする*/
String load(String fname){
StringBuffer sb = new StringBuffer();
try{
BufferedReader br
= new BufferedReader(new FileReader(fname));
String line;
while((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
}catch(FileNotFoundException e){
System.err.println("ファイル "+fname+" は存在しません");
}catch(IOException e){
System.err.println(e);
} finally {
return sb.toString();
}
}
public static void main(String[] args) {
Reg r = new Reg();
System.out.println("-----テスト開始-----");
r.test();
System.out.println("-----テスト終了-----");
}
}
本当ですね。なんでだめだったんでしょう。
どっかミスしてたのかもしれませんね・・。
バックアップがあるのであとで引っ張り出して自分の
書いたのと何処が違ったのか検証してみたいと思います。
それにしてもPerlの正規表現もほぼそのまま
つかえるんですね。やっぱり正規表現て便利かも!
本格的なコードまでかいてテストしていただいて
本当にありがとうございました。
No.1
- 回答日時:
>エディタに貼り付けて\を\\に置き換えたものを
正規表現の部分にしたところ
ここはイイと思う。
>正確にマッチしてくれませんでした。
ほんと?
僕が試しに書いたソースコードでは、
(おそらくたぶん思ったとおりに)マッチしたぞ。
「マッチングの対象とするテキスト」としてどんなのを指定した?
たとえば
「このURLはhttp://java.sun.com/education/ja/index.html です」
というテキストだとうまくマッチしないハズ。
(※URLアドレスの前にスペースが入っていない)
どうだろう?
-------------------------
これでも解決しなければ、
ソースコードを提示してみるといいと思う。
※「正規表現の文字列」だけは省略するとして。
この回答への補足
ちなみにデータはYahooのトップページだったのですが、
findでまわしてgroupで拾ってました。その時に
3~5個くらいしか拾えませんでしたのであれ?
っておもったんです。コードはこんなかんじでした
Pattern pattern = Pattern.compile("正規表現");
Matcher matcher = pattern.matcher(String);
while((matcher.find())){
System.out.println(matcher.group());
}
でも正規表現て便利ですけどデバッグしにくいきがします
完璧にデバッグするにはどうしたらよいんだろう・・。やっぱり
想定されるあらゆるデータをテストしなければならないんでしょうか
なれないためか正規表現を使うとなにか不安です。
実は質問してからだいぶたってしまいましたため、面倒ながら
indexOfで代用してしまいました。削除か締め切るべきところですが
こちらもきになったのでしませんでした。エスケープの部分は
やはり\\でよかったのですね。それだけわかっただけでもありがたく
思います。実はその時点でまちがってるかもしれないと思ってました
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Java JAVAの1つの正規表現で上記Textすべてと合致する正規表現を教えてください。 4 2022/11/06 08:46
- その他(コンピューター・テクノロジー) 正規表現の置換で数値を合計したいです。 2 2022/10/17 11:01
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Java この世で連日正規表現について質問している阿呆は私くらいしかいないでしょう。本当にお世話になっています 2 2022/05/22 11:59
- 数学 正規数の定義で分からないことがあります。 正規数の定義について専門書において 「xがr進正規であると 1 2023/07/17 20:50
- バッテリー・充電器・電池 iPhoneX Rバッテリー交換についての質問です。 現在iPhoneXRを3年使用しています。最近 1 2022/11/04 16:51
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでデータに登録する度にID...
-
yyyymmddからyyyy/mm/d...
-
java連結
-
csv出力について
-
Java int sum = 0は必要ですか?
-
ソケットを使ったサーバとクラ...
-
「プログラミング」JAVAの...
-
「テキストファイルをリソース...
-
javaでクッキーを取得したい
-
JAVAで、SSL通信
-
テキストファイルから空白行をよむ
-
JAVAでエラーがでる。
-
equalsの逆
-
javaプログラミングの質問です。
-
今勉強中のjavaで。わからない...
-
BufferedReader.readline()で読...
-
java.lang.NoClassDefFoundErro...
-
C言語のポインターに関する警告
-
VBAで配列の計算
-
[JAVA]try 内の変数を外で!?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
[JAVA]エラーが解決できません。
-
javaのfor文が機能してないみた...
-
InputStream.read()でタイムア...
-
Servletでテキストボックスに入...
-
Javaでデータに登録する度にID...
-
Inputstreamについて
-
BufferedReaderでのエラー
-
FileクラスのcanRead/canWrite...
-
java連結
-
Java 読み込んだテキストファイ...
-
Javaの質問です。テキストファ...
-
テキストファイルの任意の文字...
-
Class.forNameでエラーになる
-
テキストファイルにおいて任意...
おすすめ情報