Regular Expression

Regular Expression notepad++ 文本提取数据(网址/邮箱/电话等等),正则表达式RegEx, 外贸实战笔记v8.5

Regular Expression notepad++ 文本提取及清洗数据,网址、邮箱、电话等等一切目标文本,外贸客户开发,客户列表库清洗,外贸实战笔记。

Regular Expression 正则表达式RegEx

你手头所有的外贸客户信息攫取软件,邮箱、电话、网址都是用正则表达式做的,所以也建议使用notepad++,进一步领会RegEx.

notepad++

相关正则

Website正则

  1. 首先,用正则表达式判断网址,是一件非常复杂且不确定的事情,漏判误判错判是极其可能的,尤其对于外贸业务潜在客户网址库而言,涉及面广,情况复杂,专业性强,简单的正则表达式更加难以做到十全十美
  2. 即使是邮箱的正则,也难以做到完美,你可以简单粗暴地理解,此文提到的邮箱正则,就是市面上所有邮箱提取工具的方式方法,无出其右

Excel数据库

前面已经说了,对于外贸业务客户网址列表而言,这种数据是极其庞杂且专业的。先准备一份2万7112个网址,带www., http, https或者直接是域名,当然也有各种三级三级界面的后缀。

regular expression
  1. 在实际工作中会发现,绝大多数网址,直接在搜索引擎输入域名,比如example.com即可
  2. 有的得加上www.,即www.example.com
  3. 还有得https://www.example.com
  4. 再有,得是http://www.example.com
20230319225044
20230319225215

请注意,这里说的是打开的情况,有一种情况是,域名带有http、https,去掉之后网站打不开。这其中的逻辑作者讲不深入,就不班门弄斧了,自行Google。但,事实正如前文所述,日常工作中这种情况并不少见,可留意观察。因此,你的数据源是怎样的就保持怎样,你采集来的数据源就是目标群体想向他的市场表达的数据样式。

 

再粗暴一点理解,有的就留着,没有的不要乱加。

42M2TN4T6F MPF3R29
N8HXV8DGWLJY80@BOLV
				
					http和https是网络协议的名称,www是域名前缀。

- http:是Hypertext Transfer Protocol (超文本传输协议)的缩写,是一种用于传输数据的应用层协议,用于在Web浏览器和Web服务器之间传递信息。
- https:是以SSL (Secure Sockets Layer 安全套接层) 协议为基础的加密传输协议,保护用户数据的安全。
- www:是World Wide Web(万维网)的缩写,是Internet上提供全球信息访问的一种网络服务。

因此,网址带有http和https的,是协议的不同,表示数据传输的安全性和可靠性不同。而网址带有www的,则代表这是一个万维网网站。
				
			
仅用域名处理
20230320114719

27192条数据,如果只用域名来处理,舍弃http、https、www.,可看到重复10423条,相当于38%的域名重复,留存总数据61%。

当然也有这么一种声音,都什么时代了,还要带个http、https、www.,不带还打不开,打不开我还就不要你了,自己改去吧。

不带https、http和www.一级域名正则【仅且只能为域名本身】

				
					^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$
				
			
20230319235122

在和Excel清洗中,去除http和https,以及www.相对应,无误,可用。

外贸客户开发
notepad++
一级域名正则解释
				
					^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$

这个正则表达式匹配的是符合标准的网站一级域名,其中:
一级域名由字母、数字和“-”组成;
一级域名长度在 1~63 之间;
一级域名后面是一个点和国家/地区的标识符,如.com、.cn、.hk 等。这个标识符由两个或三个字母组成;

例如:
baidu.com
google.cn
apple.co.jp
subdomain.example.co.uk
my-domain123.net

符合上述规则的网站一级域名。
但是,它不匹配 IP 地址或本地主机名等其他类型的主机名。




				
			

带https、http、www.及各级链接正则【仅且含域名本身也可】

				
					(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/[^\s]*)?
				
			
				
					- `(https?:\/\/)?`: 可选的http或https协议
- `(www\.)?`: 可选的www子域名
- `([a-zA-Z0-9-]+\.)+`: 一个或多个非空字符、数字或破折号,加上一个点,至少匹配一个
- `[a-zA-Z]{2,}`: 两个或以上字母的顶级域名,例如com、org
- `(\/[^\s]*)?`: 可选的路径,只要是斜杠后面跟着零个或多个非空白字符。

这个正则表达式会匹配以下网址:

- http://www.example.com/
- https://example.com/
- http://example.co.uk/about/
- https://www.example.net/products
- http://www.example.info

但它不会匹配子域名,例如:

- blog.example.com
- www2.example.net

如果需要匹配子域名,可以将 `(www\.)?` 修改为 `([\w-]+\.)*`。
				
			
20230320005049

邮箱正则

				
					[a-z0-9._%+-]*@[a-z0-9.-]*\.[a-z]{2,4}
				
			
VB9138L6BFNDSSJRH
				
					这是一个简单的邮箱地址的正则表达式模式,它包含以下部分:

[a-z0-9._%+-]* 表示匹配用户名部分,可以由小写字母、数字、点号、下划线、百分号、加号和破折号组成,长度可以为零或更多个字符。
@ 表示匹配@符号。
[a-z0-9.-]* 表示匹配域名部分,可以由小写字母、数字、点号和破折号组成,长度可以为零或更多个字符。
\. 表示匹配一个点号。
[a-z]{2,4} 表示匹配顶级域名,由小写字母组成,长度为2到4个字符。
				
			

综上所述,该正则表达式模式可以匹配一些简单的邮箱地址,但是并不能匹配所有的邮箱地址,因为实际上的邮箱地址有很多变化和特殊情况,例如国际化邮箱地址(IDN)等。但在实际外贸客户邮箱整理中,已经足够使用,能够完全应对。

OPLJOQNDJ36H7GN @I

电话正则

具体国家具体分析。

中国举例

				
					/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
				
			
				
					^ 表示开始匹配
$ 表示结束匹配
() 表示分组
| 表示或
\d 表示数字

这个正则表达式可以匹配以下开头的手机号码:

- 13
- 14(除了143和149)
- 15(除了154)
- 16(除了165和169)
- 17(除了174、175、176)
- 18
- 19(除了194)

后面必须跟着8个数字。因此,这个正则表达式可以用来验证中国大陆地区的手机号码。
				
			
WB24G0SRNRHNWK@ZJR9

美国举例

				
					[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}
				
			
				
					这是一个基本的美国电话号码正则表达式模式,可以匹配常见的电话号码格式,包括以下形式:

1234567890
123-456-7890
123.456.7890
123 456 7890
(123) 456-7890
1-123-456-7890

该正则表达式模式包含以下部分:
[01]?[- .]? 表示匹配可选的一个前缀0或1,可选的一个分隔符-、空格或点号。
(\([2-9]\d{2}\)|[2-9]\d{2}) 表示匹配区号,可以是括号包含的3位数字,或者3位数字。
[- .]? 表示匹配可选的一个分隔符-、空格或点号。
\d{3} 表示匹配3位数字的前缀,即号码的前三位。
[- .]? 表示匹配可选的一个分隔符-、空格或点号。
\d{4} 表示匹配4位数字的后缀,即号码的后四位。
综上所述,该正则表达式模式可以匹配常见的美国电话号码格式,但是也有一些未能覆盖到的情况,如国际电话号码等。


				
			

搜索实战-邮箱举例

提http、https、www.网址带各级后缀【域名本身也可】

正则如下,notepad++可测,此文表格放心使用。

				
					(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/[^\s]*)?
				
			
Extract Domains

文本输入: