这几天因为工作需要,需要在一堆文本中提取如下信息。规则如下:
1. 提取Email地址规则(依据RFC 2822 (RFC2822))
1). 区别字符记号 "@"
Mail 本文中,“@” 的前后地址使用的字符为许可使用的1个或者多个。
2). mail 地址许可使用的字符及最大字符数
Mail 地址可以使用以下82 个字符:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
!#$%&'*+-./=?^_{|}~
“@”在外的93个ASCII 字符中,禁止使用以下 11 个字符 :
"(),:;<>[/]
包括“@” 最多可以识别64 个字符。 超过64个字节以外的任何允许使用的字符都不能被识别作为E-mail 地址。
延伸阅读:The Elements of an Email Address
2. 提取URL地址规则(依据RFC 1738 (RFC1738))
1). 区别字符记号(这里简单讨论一般非智能手机使用规则,只支持http访问)
在以下UR L 标识后面跟随一个或多个( 后面 URL 格式中允许使用的) 字符的情况,到一个区分字符(后面URL 格式中允许使用的文字以外的任何其他字符)出现为止均为此URL 的一部分。
http://
https://
2). URL 允许使用的字符及最大字符数
允许使用以下91 个文字:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
!#$%&'()*+,-./:;=?@[/]^_`{|}~
94个ASCII 文字中,禁止使用以下3个文字:
"<>
包括URL 区别字符最大可以识别256 个字节的字符。 超过256的任何字符URL 将不予识别。
3. 提取电话号码规则
1). 号码可以包括一个和多个以下字符“0”~“9” ,“*”和“#”。
2). 3 <= 号码长度 <= 32
3).“+”可以做为一个号码的开始,但不能计算到号码长度中。
4).“Space”, “-“, “(“, “)”,这四个字符可以穿插在一条电话号码中,但提取后必须忽略掉这些字符,这些字符同样不能计算到号码长度中。
举例如下:
| Example | Message text | Anchored number | Number to dial |
| 1 | 01/01/2005 | not anchor | - |
| 2 | January 2005 | January 2005 | 2005 |
| 3 | *99# | *99# | *99# |
| 4 | 99#2* | 99#2* | 99#2* |
| 5 | *9# | *9# | *9# |
| 6 | +39 | not anchor | - |
| 7 | +391 | +391 | +391 |
| 8 | tel:+39 | not anchor | - |
| 9 | tel:+391 | tel: +391 | +391 |
| 10 | 391 091 | 391 091 | 391091 |
| 11 | +(0)44-8 | +(0)44-8 | +0448 |
| 12 | 123, 456 | 123 , 456 | Two different num: 123 and 456 |
本文详细介绍了从文本中提取Email地址、URL链接及电话号码的具体规则,包括各种字符的使用限制和最大长度规定。适用于需要进行文本信息提取的工作场景。
1103

被折叠的 条评论
为什么被折叠?



