文字列から電子メールを抽出したいと思います。
私は文字列abc defg [email protected]
を持っていて、文字列[email protected]
を取得したいと考えています。文字列から電子メールを抽出する方法
どのようにPL/SQLで実行できますか?
文字列から電子メールを抽出したいと思います。
私は文字列abc defg [email protected]
を持っていて、文字列[email protected]
を取得したいと考えています。文字列から電子メールを抽出する方法
どのようにPL/SQLで実行できますか?
てみてください。この(regular expression):このような
select regexp_substr ('sdss [email protected] sdsda sdsds ','[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}') email from dual
何かが多くの状況のために働くが、完璧には程遠いだろう。私はこれが失敗するかもしれない2つの異なる方法を示す1つの文字列を追加しました。可能性のあるすべての状況を捕捉するクエリを書くのは簡単ではありません。 「一致パターン」をさらに細分化するまでにどれくらいの時間がかかるのかは、入力データ内の電子メールがどれほど一般的ではないかによって決まります。
正規表現では、ドット(。)をバックスラッシュでエスケープし、一致するリスト(角括弧内の文字のリスト)内でハイフンを使用する必要があります。リストの最初または最後の文字、どこでもメタキャラクターです。
出力では、最後の行に注目してください。入力文字列は空であるため、出力もNULLになります。
with
input_strings (str) as (
select 'sdss [email protected] sdsda sdsds ' from dual union all
select '[email protected] may not work' from dual union all
select '[email protected], [email protected],[email protected]' from dual union all
select '' from dual union all
select 'this string contains no email addresses' from dual union all
select '-this:[email protected]_domain' from dual union all
select '[email protected] [email protected]@mike.com' from dual
)
select str as original_string,
level as idx,
regexp_substr(str, '[[:alnum:]_-][email protected][[:alnum:]_-]+\.[[:alnum:]_-]+', 1, level)
as email_address
from input_strings
connect by regexp_substr(str, '[[:alnum:]_-][email protected][[:alnum:]_-]+\.[[:alnum:]_-]+', 1, level)
is not null
and prior str = str
and prior sys_guid() is not null
;
ORIGINAL_STRING IDX EMAIL_ADDRESS
------------------------------------------- ---------- --------------------------------
-this:[email protected]_domain 1 [email protected]_domain
[email protected] [email protected]@mike.com 1 [email protected]
alpha[email protected] [email protected]@mike.com 2 [email protected]
[email protected] may not work 1 [email protected]
sdss [email protected] sdsda sdsds 1 [email protected]
[email protected], [email protected],[email protected] 1 [email protected]
[email protected], [email protected],[email protected] 2 [email protected]
[email protected], [email protected],[email protected] 3 [email protected]
this string contains no email addresses 1
1
10 rows selected.
これを確認http://www.orafaq.com/forum/t/189919/ – Petaflop
メールはいつも最後になるのですか? – sagi
文字列を検索して、空白のinとしてLenを渡してから、そのintのngramトークンをフルスイングで取得することができます。その痛みはあるものの、やる気がなくなり、一貫しています。データサンプルがありますか? – Merenix