前提
プログラミング初心者です。
質問を見ていただきありがとうございます。
Javaで正規表現を利用したプログラムを書いています。
コードを書いていて調べても分からないことがあったので質問させて頂きます。
実現したいこと
下記のようなコードを書いており、これを実行すると、
名前 メールアドレス
と表示されます。これを String reg = "([^<]*)<([^>*])>,?";
の部分を変更して
名前 @メールアドレスのドメイン名
となるプログラムに変更したいのですが、試行錯誤したのですがうまくいきません
メールアドレスから@とドメイン名を切り抜くには
どのように変更したらよいのでしょうか教えて頂きたいです。
発生している問題・エラーメッセージ
私の環境ではエラーは発生しませんでした。
名前 メールアドレスと表示される変更前のソースコード
Java
ソースコード
package exercise09_4; import java.util.regex.*; // 正規表現に関するクラスパッケージ public class Main { public static void main(String[] args) { // 検索するパターン String reg = "([^<]*)<([^>*])>,?"; // 名前<アドレス>, にマッチ // 検索対象の文字列 String str = "佐藤太郎<sato@yahoo.co.jp>, 高橋花子<takahashi@yahoo.co.jp>, 伊藤太郎<ito@yahoo.co.jp>, 加藤花子<kato@yahoo.co.jp>"; // マッチングの準備 Pattern p = Pattern.compile (reg); Matcher m = p.matcher(str); String result = m.replaceAll("$1\t$2\n"); // 結果の出力 System.out.println("元文:\n"+str+"\n置換後:\n"+result); } }
試したこと
私なりに考え、 String reg ="([^<]*)<([^>*])>,?";の部分を下記のように色々変更してみたり、インターネットで調べたのですがどれも@ドメイン名を切り抜けませんでした。
String reg = "([^<]*)<@([^>]*)([^@]*)>,?";
String reg = "([^<]*)<@([^@]*)([^>]*)>,?";
String reg = "([^<]*)<@*([^>]*)([^@]*)>,?";
String reg = "([^<]*)<@([^@]*)>,?";
String reg = "([^<]*)<[@]*([^>]*)([^@]*)>,?";
String reg = "([^<]*)<@*([^@]*)([^>]*)>,?";
String reg = "([^<]*)<@([^>]*)>,?";
String reg = "([^<]*)<[@]*([^@]*)([^>]*)>,?";
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答4件
あなたの回答
tips
プレビュー