我想将电子邮件地址作为字符串的一部分。 例如,如果字符串是
“您的姓名(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})+')
请帮助。
答案 0 :(得分:0)
您可能需要更多内容:
REGEXP_SUBSTR('"your name(abc@dd.com)" aaa@bbb.com','[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}')
像[.]
之类的东西真的没有意义,点匹配任何字符,方括号是一种“OR”语句,里面的任何字符都可以进入那个地方,但在你的情况下你真的想要匹配文字点,所以你需要转义\.
不确定oracle如何处理转义,你可能需要双重转义它们。
答案 1 :(得分: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
)
;
答案 2 :(得分: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