文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 235
阅读 8
收藏 0
点赞 0
评论 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.

© 著作权归作者所有

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

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

彭博 ⋅ 2012/03/09 ⋅ 0

C# 使用正则表达式去掉字符串中的数字

C# 使用正则表达式去掉字符串中的数字 // 去掉字符串中的数字 public static string RemoveNumber(string key) { return System.Text.RegularExpressions.Regex.Replace(key, @"d", ""); } ......

helicon80 ⋅ 2015/01/21 ⋅ 0

C#正则表达式

使用到的类 C#中使用正则表达式需要如下几个类(类所在的命名空间为:System.Text.RegularExpressions): Regex 编译后的表达式的实例 RegexOptions 提供用于设置正则表达式的枚举值 RegexC...

云颖 ⋅ 2013/12/14 ⋅ 1

C#分割字符串的几种方法

单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab deab deab de 多个字符分割 ......

postdep ⋅ 2012/11/29 ⋅ 0

最全的常用正则表达式

https://www.cnblogs.com/weishuanbao/p/5382516.html 一、校验数字的表达式数字:^[0-9]*$n位的数字:^d{n}$至少n位的数字:^d{n,}$m-n位的数字:^d{m,n}$零和非零开头的数字:^(0|[1-9][0...

ahl123 ⋅ 01/02 ⋅ 0

c#中分割字符串的几种方法

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

晨曦之光 ⋅ 2012/03/09 ⋅ 0

在ASP.NET中自动给URL地址加上超链接

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

晨曦之光 ⋅ 2012/03/09 ⋅ 0

正则表达式 捕获组语法

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

aiaa5505 ⋅ 2016/03/07 ⋅ 0

正则表达式测试工具 Regex Tester 的使用方法

正则表达式测试工具“RegexTester”,下载地址:http://www.oschina.net/p/regex+tester 一、关于本文 今天的工作中遇到了一些正则表达式,我需要检验它们是否正确,不过我对自己目测的结果又...

北风其凉 ⋅ 2015/07/28 ⋅ 0

关于正则MatchCollection.Count属性严重影响执行效率问题

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

落幕残情 ⋅ 2014/08/29 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 35分钟前 ⋅ 0

Spring JavaConfig 注解

JavaConfig注解允许开发者将Bean的定义和配置放在Java类中。它是除使用XML文件定义和配置Bean外的另一种方案。 配置: 如一个Bean如果在XML文件可以这样配置: <bean id="helloBean" class="...

霍淇滨 ⋅ 42分钟前 ⋅ 0

Spring clound 组件

Spring Cloud技术应用从场景上可以分为两大类:润物无声类和独挑大梁类。 润物无声,融合在每个微服务中、依赖其它组件并为其提供服务。 Ribbon,客户端负载均衡,特性有区域亲和、重试机制。...

英雄有梦没死就别停 ⋅ 44分钟前 ⋅ 0

Confluence 6 重新获得站点备份文件

Confluence 将会创建备份,同时压缩 XML 文件后存储熬你的 <home-directory>/backups> 目录中。你需要自己访问你安装的 Confluence 服务器,并且从服务器上获得这个文件。 运行从 Confluence...

honeymose ⋅ 48分钟前 ⋅ 0

informix的常用SQL语句

1、创建数据库 eg1. 创建不记录日志的库testdb,参考语句如下: CREATE DATABASE testdb; eg2. 创建带缓冲式的记录日志的数据库testdb(SQL语句不一定在事务之中,拥有者名字不被用于对象的解...

wangxuwei ⋅ 今天 ⋅ 0

matplotlib画图

最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 from pylab import *from numpy import *x = linspace(0, 5, 10)y = x ** 2figure()plot(x, y, 'r')...

Dr_hu ⋅ 今天 ⋅ 0

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 今天 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 今天 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部