1

文字列のメールアドレス部分を取得したい。たとえば、文字列が

「あなたの名前(your@name.com)」aaa@bbb.com

それから私は取得したい

aaaa@bbb.com

基本的に、文字列を削除できれば

""

その後、それはトリックを行います。以下の正規表現を使用しています REGEXP_SUBSTR

REGEXP_SUBSTR('"your name(abc@dd.com)" aaa@bbb.com',
             '([a-zA-Z0-9_.\-])+@(([a-zA-Z0-9-])+[.])+([a-zA-Z0-9]{2,4})+') 

親切に助けてください。

4

3 に答える 3

0

おそらく、次の行に沿ってさらに何かが必要です。

REGEXP_SUBSTR('"your name(abc@dd.com)" aaa@bbb.com','[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}')

本当に[.]意味をなさない、ドットは任意の文字に一致し、角括弧は一種の「OR」ステートメントであり、内部の任意の文字がその場所に入ることができますが、あなたの場合、実際にはリテラルドットに一致させたいので、エスケープする必要がありますオラクルが\.エスケープをどのように処理するかわからない場合は、それらを二重にエスケープする必要があるかもしれません。

于 2013-09-09T08:31:35.047 に答える
0
SELECT  REGEXP_SUBSTR(email, '[A-Za-z0-9\_\-\.]+@\w+\.\w+', 1, 2) AS cleaned_email
FROM
(
        SELECT  '"your name(your@name.com)" aaa@bbb.com'      AS email FROM DUAL UNION ALL
        SELECT  '"your name(your.name@name.com)" aaa@bbb.com' AS email FROM DUAL
)
;
于 2013-09-09T08:32:32.633 に答える
0

$アンカーを使用して、一致が文字列の最後で発生する必要があることを簡単に示すことができます。

with t1(col) as(
   select '"your name(your@name.com)" aaa@bbb.com' from dual
)

select regexp_substr(col, '[[:alnum:]._%-]+@[[:alnum:]._%-]+\.com$') as res
  from t1

結果:

RES
-----------
aaa@bbb.com  
于 2013-09-09T08:37:10.267 に答える