// \b 单词边界
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := '\bDelphi\b'; //前后边界
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆ Delphi2007 MyDelphi   FreeAndNil(reg);
end;

// \b 单词边界: 左边界
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := '\bDelphi'; //左边界
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆ ◆2007 MyDelphi   FreeAndNil(reg);
end;

// \b 单词边界: 右边界
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := 'Delphi\b'; //右边界
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆ Delphi2007 My◆   FreeAndNil(reg);
end;

// \B 非单词边界
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi MyDelphi2007 MyDelphi';
  reg.RegEx  := '\BDelphi\B'; //现在只有 MyDelphi2007 中的 Delphi 属于非单词边界
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: Delphi My◆2007 MyDelphi   FreeAndNil(reg);
end;

// ^ 行首
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := '^Del'; //匹配在行首的 Del
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆phi Delphi2007 MyDelphi   FreeAndNil(reg);
end;

// \A 也标记行首
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := '\ADel'; //匹配在行首的 Del
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆phi Delphi2007 MyDelphi   FreeAndNil(reg);
end;

// $ 行尾
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := 'phi$'; //匹配在行尾的 phi
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: Delphi Delphi2007 MyDel◆   FreeAndNil(reg);
end;

// \Z 也标记行尾
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi Delphi2007 MyDelphi';
  reg.RegEx  := 'phi\Z'; //匹配在行尾的 phi
  reg.Replacement := '◆';
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: Delphi Delphi2007 MyDel◆   FreeAndNil(reg);
end; // 测试时, \Z 不区分大小写; \A 区分

Delphi 正则表达式语法(5): 边界的更多相关文章

  1. Delphi 正则表达式语法(10): 选项

    Delphi 正则表达式语法(10): 选项 // preCaseLess: 不区分大小写, 相当于其他语言中的 i var   reg: TPerlRegEx; begin   reg := TPe ...

  2. Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"

    Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边 var   reg: TPerlRegEx; begin   ...

  3. Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用

    Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用 //准备: 我们先写一个搜索所有英文单词的表达式 var   reg: TPerlRegEx; begin   reg := TP ...

  4. Delphi 正则表达式语法(7): 匹配转义字符

    Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var   reg: TPerlRegEx; begin   reg := TPe ...

  5. Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

    Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   ...

  6. Delphi 正则表达式语法(4): 常用转义字符与 .

    Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] var   reg: TPerlRegEx; begin   reg := TPerlRegE ...

  7. Delphi 正则表达式语法(3): 匹配范围

    Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(n ...

  8. Delphi 正则表达式语法(2): 或者与重复

    Delphi 正则表达式语法(2): 或者与重复 // | 号的使用, | 是或者的意思 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create ...

  9. Delphi 正则表达式语法(1): 关于大小写与中文

    Delphi 正则表达式语法(1): 关于大小写与中文 //替换一般字符串 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil); ...

随机推荐

  1. linux镜像空间

    硬件采用nandflash,nandflash为8位数据宽度,没有dataflash和norflash. Nandflash空间分配为 bootstrap + u-boot + env + linux ...

  2. pl/sql 实例精解 03

    1. 在Pl/sql 中使用 sql 1: /* 2: * 一个 pl/sql 语句块, 只是一个容器, 是表明一个整体的容器, 容器里可以放置多个sql语句 3: */ 4:   5: declar ...

  3. jsp页面form表单提交时候乱码

    1.问题描述: 表单提交中文乱码问题,怎么解决 2.原因 当表单传输到服务器上时,服务器会将传输的数据进行编码(iso-8859-1),然后当我们从服务器上面取数据的时候,就会出现乱码 3.解决的方式 ...

  4. 【POJ】2942 Knights of the Round Table(双连通分量)

    http://poj.org/problem?id=2942 各种逗.... 翻译白书上有:看了白书和网上的标程,学习了..orz. 双连通分量就是先找出割点,然后用个栈在找出割点前维护子树,最后如果 ...

  5. sql实际应用-递归查询

    1.既然要谈到sql,数据库表是必须的 2.数据结构     3.获取某个节点的所有子节点     传统的写法(sql2000) 很麻烦,暂且就不写了     来看看CTE的写法 CREATE PRO ...

  6. Python_selenium之获取页面上的全部邮箱

    Python_selenium之获取页面上的全部邮箱 一.思路拆分 获取网页(这里以百度的“联系我们”为例),网址http://home.baidu.com/contact.html 获取页面的全部内 ...

  7. 61、常规控件(4)TabLayout-便捷实现标签

    <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width=&q ...

  8. IOS控件:长度单位换算(UITextField,IBAction,委托事件touchesBegan)

    #import <UIKit/UIKit.h> @interface demo7_dayViewController : UIViewController { IBOutlet UITex ...

  9. c itoa和atoi

    #include <iostream> using namespace std; int main() { #if 1 ; ];//不要写成char*,因为没有分配空间 itoa(num, ...

  10. HDU 5658 CA Loves Palindromic(回文树)

    CA Loves Palindromic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/O ...