解析しているファイルがあり、常にメールアドレスが含まれています。ファイルは現在、の前に先頭のスペースが表示されて配置されており@
、ドメインをキャプチャする必要があります。
foo @bar.com more data here
foo @foo.com more data here
引き出したいのですが@bar.com
、@foo.com
正規表現を使い始めたばかりです。「 @単語境界の先頭で、次の単語境界までの後続のすべての文字を含む」というパターンをプルしようとしています。
私は次のさまざまな反復を試しましたが、@
文字通りのグループ化、正方形のバケツ...しかし何も機能していないようです。
編集-実際のコード:
import java.util.regex.*;
import java.io.*;
import java.nio.file.*;
import java.lang.*;
//
public class eadd
{
public static void main(String args[])
{
String inputLine = "foo foofoo foo foo @bar.com foofoofoo foo foo foo";
String eDomain = "";
// parse eadd
Pattern p2 = Pattern.compile("(\\b@.*\\b)");
Matcher m2 = p2.matcher(inputLine);
if(m2.matches()) {
eDomain = m2.group(1);
} else {
eDomain = "n/a";
}
System.out.println(p2+" "+m2+" "+eDomain);
}
}
そして、私がそれを実行したときの結果。
(\b@.*\b) java.util.regex.Matcher[pattern=(\b@.*\b) region=0,49 lastmatch=] n/a
私の問題はすべて、パターンではなくリテラルとして検索された後の問題に関連しています@
(たとえば、ではなく検索.*
)any and all characters
。制御文字であるという言及が見つからない@
ので、逃げる必要はないと思います。
OracleのJavaチュートリアルやドキュメント、SO、または私がチェックアウトしたオンラインリソースには、同様の例はありません。私は人々がこれをどのように扱ったかの他のサンプルを見つけることができませんでした。私が言ったように、私は正規表現にかなり慣れていませんが、これは私にとってはうまくいくはずだと私には思えます。私は何が欠けていますか?