2017-06-02 5 views
0

以下の文字列がある場合、どのように電子メールアドレスを抽出できますか? 私が抽出したい電子メールアドレス>は<により特異的に囲まれているが書いた次のRプログラミング - gregexprを使用して指定された文字列から次のコードを抽出するにはどうすればよいですか?

egstring = 'blah blah blah <[email protected]> wrote: blah blah blah' 

は、私がこれまで試みられてきたものです。

"[email protected]" 

私が得たもの:

pos = gregexpr('(?<=(\\<))([a-z0-9.]+\\@[a-z0-9.]+)(?=(\\>\\swrote\\:))',egstring,perl=TRUE)[[1]] 

は私が達成したい何が悪かったのかを把握できなかった

[1] -1 
attr(,"match.length") 
[1] -1 
attr(,"useBytes") 
[1] TRUE 
attr(,"capture.start") 

[1,] -1 -1 -1 
attr(,"capture.length") 

[1,] -1 -1 -1 
attr(,"capture.names") 
[1] "" "" "" 

。 :GSUBを使う/

+1

あなたのデータ内のすべての電子メールアドレスは、そのように '><'タグで囲まれてつもりですか?それは物事をはるかに簡単にするからです。 – Marius

+0

@マリアス私が抽出したいものはすべてではありませんが、具体的に '<>'で囲まれています: – OinkOink

答えて

1

()これは動作します:

gsub(".*<(.*)>.*", "\\1", egstring) 
+0

Hmm ..これはこの特定のケースでは機能しますが、説明して? 「\\ 1」は何を表していますか?私が知っているところから 'gsub'は最初のパラメータのパターンを' egstring'にある2番目のパラメータの文字列に置き換えます。 – OinkOink

+0

(*。)内にあった最初のグループをキャプチャするための逆参照です。\\を使って\ in \ 1をエスケープします – user2510479

+0

Ahh ...私は見る!私が抽出したい電子メールアドレスは '<> wrote:'で囲まれているので、コードを少し修正しましたが、電子メールアドレスを正しく抽出できませんでした。以下は私がやったことです。 "012"を試すことができます。 "gsub("。* <(.*)>(\\ swrote \\ :) "、" \\ 1 "、egstring)' – OinkOink

関連する問題