文档章节

官方的正则表达式组件 RegularExpressions (5) : 强测试

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 235
阅读 8
收藏 0

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses RegularExpressions, msxml;

const
  patternUrl    = 'http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?'; //URL地址
  patternEmail  = '\w+([-+.'']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*'; //Email地址
  patternTel    = '(\(\d{3}\)|\d{3}-)?\d{8}';                      //电话号码
  patternIDCard = '\d{17}[\d|X]|\d{15}';                           //身份证号码


{获取网页源码的函数}
function GetWebPageText(const AUrl: string): string;
begin
  with CoXMLHTTP.Create do begin
    open('Get', AUrl, False, EmptyParam, EmptyParam);
    send(EmptyParam);
    Result := responseText;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  txt,url: string;
  match: TMatch;
begin
  Memo1.Clear;
  url := 'http://www.google.com.hk/search?hl=zh-TW&source=hp&biw=1440&bih=796&q=Email+%E7%94%B5%E8%AF%9D+%E8%BA%AB%E4%BB%BD%E8%AF%81&btnG=Google+%E6%90%9C%E5%B0%8B&aq=f&aqi=&aql=&oq=';
  txt := GetWebPageText(url);

  for match in TRegEx.Matches(txt, patternUrl) do Memo1.Lines.Add(match.Value);
  Memo1.Lines.Add('--------------------------');
  for match in TRegEx.Matches(txt, patternEmail) do Memo1.Lines.Add(match.Value);
  Memo1.Lines.Add('--------------------------');
  for match in TRegEx.Matches(txt, patternTel) do Memo1.Lines.Add(match.Value);
  Memo1.Lines.Add('--------------------------');
  for match in TRegEx.Matches(txt, patternIDCard) do Memo1.Lines.Add(match.Value);
  Memo1.Lines.Add('--------------------------');
end;

end.

本文转载自:http://www.cnblogs.com/del/archive/2011/03/29/1998703.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
正则表达式的初体验:分析字符串数据

在程序中,对于数据的分析是非常重要及常见的。对于字符串数据的分析,往往就是对字符串的内容提取,捕获和替换。除非你要做的分析是简单的要求,否则你就不要再使用string的IndexOf、LastI...

彭博
2012/03/09
71
0
c#中分割字符串的几种方法

最近经常看到论坛中许多帖子询问如何使用split来分割字符串,我这里对split做一些简单的总结,希望能够对大家有所帮助。下面介绍几种方法: 第一种方法:打开vs.net新建一个控制台项目。然后...

晨曦之光
2012/03/09
18
0
正则表达式 捕获组语法

捕获组 语法: 字符 描述 示例 (pattern) 匹配pattern并捕获结果,自动设置组号。 (abc)+d 匹配abcd或者abcabcd (?<name>pattern) 或 (?'name'pattern) 匹配pattern并捕获结果,设置name为组...

aiaa5505
2016/03/07
29
0
在ASP.NET中自动给URL地址加上超链接

作为一个程序员,在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进,这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后,发现人们总喜...

晨曦之光
2012/03/09
75
0
关于正则MatchCollection.Count属性严重影响执行效率问题

我是做数据采集的 对HTML页面的数据分析一直使用正则表达式去解决 昨天突然发现一个很纠结的问题 MatchCollection.Count在解析不同页面后计算数量时 执行效率不一 甚至需要500毫秒以上 这种情...

落幕残情
2014/08/29
265
2

没有更多内容

加载失败,请刷新页面

加载更多

arcgis jsapi接口入门系列(2):图层基础操作

//图层相关demo layerFun: function () { //获取地图的所有图层(不包括的图层类型:底图图层(basemaps)) let layers = this.map.layers; ...

canneljls
28分钟前
1
0
MySQL忘记root密码--不重启mysqd重置root密码

先提个问题:如何不重启mysqld,且没有权限修改用户账号和权限的情况下,如何重新设置root密码?不知道没关系,在此之前我也是不知道如何操作的,先看看下面的几种重置root密码的方法。 1、s...

IT--小哥
30分钟前
1
0
php7不再支持HTTP_RAW_POST_DATA,微信支付$GLOBALS[‘HTTP_RAW_POST_DATA’]获取不到数据,

升级到php7后, 发现旧的web系统有些问题, 查看后才发现原来是php7不再支持HTTP_RAW_POST_DATA 原来系统一些地方, 使用$GLOBALS[‘HTTP_RAW_POST_DATA’]来获取数据, 在php7里无法获取了 ...

15834278076
31分钟前
1
0
Android--拨打电话功能

Intent callIntent = new Intent(); callIntent.setAction(Intent.ACTION_DIAL); callIntent.setData(Uri.parse("tel:" + "4008823823")......

lanyu96
37分钟前
1
0
iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状... Swift版Refresh(可以自定义多种样式)架构方面有所优化...

Android爱开源
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部