在oracle中使用REGEXP_LIKE查找同一字符的多次出现
Find multiple ocurrences of the same character using REGEXP_LIKE in oracle
我遇到以下情况:我有一个电子邮件数据库,其中包含想要接收有关公司的促销电子邮件、闪购、新产品广告等内容的人。但是一段时间以来,人们一直在注册虚假信息像 aaa@aaa.aa
这样的电子邮件地址。我目前正在研究一种清理此 table 的方法,到目前为止我的主要问题是找到正确的 REGEXP_LIKE
模式来帮助我。
我试过这个 WHERE REGEXP_LIKE (email_address, '(\w){3,}')
但这并不好。它找到了像 john@doe.com
这样的电子邮件。我试过寻找一种在 oracle 中执行此操作的方法,但到目前为止效果不佳。
有人可以帮助我吗?
您可以尝试以下模式之一:
'(\w){2,}'
'((\w)+)+'
第一个模式将检测 3 个或更多相同字符的序列。例如 aaa 或 bbb。第二个模式将检测 2 个或多个重复字符模式的序列,例如 aa、bbb、abab 或 123123 等。
这是通过使用 \1 来实现的,它是对第一个模式的反向引用,被括号括起来。在第一个模式中,后向引用指的是恰好一个字符的模式。在第二个模式中,back reference指的是1个或多个字符的batter。
我遇到以下情况:我有一个电子邮件数据库,其中包含想要接收有关公司的促销电子邮件、闪购、新产品广告等内容的人。但是一段时间以来,人们一直在注册虚假信息像 aaa@aaa.aa
这样的电子邮件地址。我目前正在研究一种清理此 table 的方法,到目前为止我的主要问题是找到正确的 REGEXP_LIKE
模式来帮助我。
我试过这个 WHERE REGEXP_LIKE (email_address, '(\w){3,}')
但这并不好。它找到了像 john@doe.com
这样的电子邮件。我试过寻找一种在 oracle 中执行此操作的方法,但到目前为止效果不佳。
有人可以帮助我吗?
您可以尝试以下模式之一:
'(\w){2,}'
'((\w)+)+'
第一个模式将检测 3 个或更多相同字符的序列。例如 aaa 或 bbb。第二个模式将检测 2 个或多个重复字符模式的序列,例如 aa、bbb、abab 或 123123 等。
这是通过使用 \1 来实现的,它是对第一个模式的反向引用,被括号括起来。在第一个模式中,后向引用指的是恰好一个字符的模式。在第二个模式中,back reference指的是1个或多个字符的batter。