Delphi 正则表达式语法(2): 或者与重复
来源:互联网 发布:用手机注册淘宝店铺 编辑:程序博客网 时间:2024/06/05 22:35
Delphi 正则表达式语法(2): 或者与重复
// | 号的使用, | 是或者的意思var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'CodeGear Delphi 2007\'; reg.RegEx := \'e|Delphi|0\'; //使用了 | 记号 reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: Cod◆G◆ar ◆ 2◆◆7 FreeAndNil(reg);end;
// + 的使用, + 是重复 1 个或多个var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'ab+\'; //使用了 + 记号, 这里是允许 a 后面有 1 个或多个 b reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: a aa aaa aaaa ◆ ◆ ◆a a呀a FreeAndNil(reg);end;
// * 的使用, * 是重复 0 个或多个var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'ab*\'; //使用了 * 记号, 这里是允许 a 后面有多个或者没有 b reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆ ◆ ◆◆ ◆呀◆ FreeAndNil(reg);end;
// ? 的使用, ? 是重复 0 个或 1 个var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'a?\'; //使用了 ? 记号 reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆b ◆bb ◆bbb◆ ◆呀◆ FreeAndNil(reg);end;
//大括号的使用, 指定重复数var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'a{3}\'; //这里指定重复 3 次 reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: a aa ◆ ◆a ab abb abbba a呀a FreeAndNil(reg);end;
//大括号的使用var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'a{2,4}\'; //这里指定重复 2-4 次 reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: a ◆ ◆ ◆ ab abb abbba a呀a FreeAndNil(reg);end;
//大括号的使用var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'a aa aaa aaaa ab abb abbba a呀a\'; reg.RegEx := \'a{1,}\'; //n 个或多个, 这里是 1 个或多个 reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆呀◆ FreeAndNil(reg);end;//上面这个 {1,} 和 + 是等效的;//还有 {0,1} 与 ? 是等效的;//{0,} 和 * 是等效的
Delphi 正则表达式语法(1): 关于大小写与中文
//替换一般字符串var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'我爱DELPHI, 但Delphi不爱我!\'; reg.RegEx := \'Delphi\'; reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: 我爱DELPHI, 但◆不爱我! FreeAndNil(reg);end;
//不区分大小写var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'我爱DELPHI, 但Delphi不爱我!\'; reg.RegEx := \'Delphi\'; reg.Replacement := \'◆\'; reg.Options := [preCaseLess]; //不区分大小的设定, 默认是区分的 reg.ReplaceAll; ShowMessage(reg.Subject); //返回: 我爱◆, 但◆不爱我! FreeAndNil(reg);end;
//试试中文替换var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'我爱DELPHI, 但Delphi不爱我!\'; reg.RegEx := \'我\'; reg.Replacement := \'◆\'; reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆爱DELPHI, 但Delphi不爱◆! FreeAndNil(reg);end;
//如果不区分大小写, 竟然也不区分中文字了var reg: TPerlRegEx;begin reg := TPerlRegEx.Create(nil); reg.Subject := \'我爱DELPHI, 但Delphi不爱我!\'; reg.RegEx := \'我\'; reg.Replacement := \'◆\'; reg.Options := [preCaseLess]; //也设定不区分大小 reg.ReplaceAll; ShowMessage(reg.Subject); //返回: ◆◆DELPHI, ◆Delphi◆◆◆! FreeAndNil(reg);end;//我测试了不同的汉字, 除了乱以外,没有规律; 所有如果操作汉字暂时不要指定 preCaseLess
Delphi 正则表达式起步
在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细致地研究它.
官方网站: http://www.regular-expressions.info/delphi.html
直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip
安装方法:
1、先把解压的 TPerlRegEx 文件夹放一个合适的地方, 我放在了 Delphi 的 Imports 目录中.
2、目前最新 For Win32 的版本是对 Delphi 2006 的, 2007 也能用.
打开 PerlRegExD2006.dpk, 提示缺少资源文件, 没关系;
在 Project Manager 窗口中的 PerlRegExD2006.bpl 上点击右键, 执行 Install;
这时在 Tool Palette 的列表中已经有了 TPerlRegEx, 在 JGsoft 组.
3、Tools -> Options -> Environment Options -> Delphi Options -> Library-Win32 -> Library path ->
添加路径: ...\\Imports\\TPerlRegEx
4、可以使用了! 直接 uses PerlRegEx 或从 Tool Palette 添加都可以.
如果不喜欢 Tool Palette 的添加方式可以省略第二步.
计划的学习步骤: 1、正则语法; 2、TPerlRegEx 功能.
//先测试一下:uses PerlRegEx; //uses 正则表达式单元procedure TForm1.FormCreate(Sender: TObject);var reg: TPerlRegEx; //声明正则表达式变量begin reg := TPerlRegEx.Create(nil); //建立 reg.Subject := \'sSsS\'; //这是要替换的源字符串 reg.RegEx := \'s\'; //这是表达式, 在这里是准备替换掉的子串 reg.Replacement := \'◆\'; //要替换成的新串 reg.ReplaceAll; //执行全部替换 ShowMessage(reg.Subject); //返回替换结果: ◆S◆S FreeAndNil(reg); //或 reg.Freeend;
分类: Delphi编程
JScript 正则表达式语法表
2007年12月21日没有评论
字符
描述
\\标记下一个字符是特殊字符或文字。例如,"n"和字符 "n" 匹配。"\\n"
则和换行字符匹配。序列 "\\\\" 和 "\\"
匹配,而 "\\(" 则和 "(" 匹配。^匹配输入的开头。$匹配输入的末尾。*匹配前一个字符零或多次。例如,"zo*"
与 "z" 或 "zoo" 匹配。+匹配前一个字符一次或多次。例如,"zo+"
与 "zoo" 匹配,但和 "z" 不匹配。?匹配前一个字符零或一次。例如,"a?ve?"
和 "never" 中的 "ve" 匹配。.匹配除换行字符外的任何单个字符。(pattern)匹配 pattern
并记住该匹配。匹配上的子字符串,可以使用 Item [0]...[n],来从生成的
Matches 集合中取回。要匹配圆括号字符 ( ),则需使用
"\\(" 或 "\\)"。x|y匹配 x 或
y。例如,"z|food" 和 "z" 或 "food"
匹配。"(z|f)ood" 匹配 "zoo" 或
"food"。{n}n 是非负整数。共匹配 n
次。例如,"o{2}" 和 "Bob" 中的
"o" 不匹配,但和 "foooood" 中的前两个 o
匹配。{n,}n 是一个非负整数。至少匹配 n
次。例如,"o{2,}" 和 "Bob" 中的
"o" 不匹配,但和 "foooood" 中的所有 o
匹配。"o{1,}" 与 "o+" 等效。"o{0,}"
和 "o*" 等效。{n,m}m 和 n 是非负整数。至少匹配 n
次而至多匹配 m 次。例如,"o{1,3}" 和
"fooooood" 中的前三个 o 匹配。"o{0,1}" 和
"o?" 等效。[
xyz]字符集合。匹配括号内的任一字符。例如,"[abc]"
和 "plain" 中的 "a" 匹配。[^xyz
]否定字符集合。匹配非括号内的任何字符。例如,"[^abc]"
和 "plain" 中的 "p" 匹配。[a-z]字符范围。和指定范围内的任一字符匹配。例如,"[a-z]"
匹配 "a" 到 "z"范围内的任一小写的字母表字符。[^m-z]否定字符范围。匹配不在指定范围内的任何字符。例如,"[m-z]"
匹配不在 "m" 到 "z"范围内的任何字符。\\b匹配字的边界,也就是说,在字和空格之间的位置。例如,"er\\b"
和 "never" 中的 "er" 匹配,但和
"verb" 中的 "er" 不匹配。\\B匹配非字边界。"ea*r\\B"
和 "never early" 中的 "ear" 匹配。\\d匹配数字字符。等价于 [0-9]。\\D匹配非数字字符。等价于 [^0-9]。\\f匹配换页字符。\\n匹配换行字符。\\r匹配回车符字符。\\s匹配任何空白,包括空格、制表、换页等。与
"[ \\f\\n\\r\\t\\v]" 等效。\\S匹配任何非空白字符。与 "[^ \\f\\n\\r\\t\\v]"
等效。\\t匹配制表字符。\\v匹配垂直制表符。\\w匹配包括下划线在内的任何字字符。与
"[A-Za-z0-9_]" 等效。\\W匹配任何非字字符。与
"[^A-Za-z0-9_]" 等效。\\num匹配 num,其中 num
是一个正整数。返回记住的匹配的引用。例如,"(.)\\1"
匹配两个连续的同一字符。\\n匹配 n,其中 n
是八进制换码值。八进制换码值必须是 1、2、或 3
位长。例如,"\\11" 和 "\11"
都匹配制表字符。"\011" 和 "\01" &
"1" 是等效的。八进制换码值必须不超过 256。如果超过了,则只有前两位组成表达式。允许在正则表达式中使用
ASCII 码。\\xn匹配 n,其中 n
是十六进制换码值。十六进制换码值必须正好是两位长。例如,"\\x41"
与 "A" 匹配。"\\x041" 和 "\\x04"
& "1" 是等效的。允许在正则表达式中使用
ASCII 码。
- Delphi 正则表达式语法(2): 或者与重复
- Delphi 正则表达式语法(2): 或者与重复
- Delphi 正则表达式语法(2): 或者与重复
- Delphi 正则表达式语法
- Delphi 正则表达式语法(1): 关于大小写与中文
- Delphi 正则表达式语法(4): 常用转义字符与 .
- Delphi 正则表达式语法: 关于大小写与中文
- delphi与正则表达式
- Delphi 与正则表达式
- Delphi与正则表达式
- Delphi 与正则表达式
- delphi 与正则表达式
- Delphi 正则表达式语法(3): 匹配范围
- Delphi 正则表达式语法(5): 边界
- Delphi 正则表达式语法(5): 边界
- Delphi 正则表达式 与 TPerlRegEx
- 正则表达式语法2
- 正则表达式语法与应用
- 打造WIN8 USB(8G低速U盘)移动版系统
- 【数据结构】归并排序
- 从那一天起,你就成了我的全部
- L - Light Bulbs 解题报告 (隐藏水题)
- openssl dgst 消息摘要
- Delphi 正则表达式语法(2): 或者与重复
- Android实现长时间等待界面
- 【phpcms-v9】会员模块index.php控制器文件分析:
- E - Easy Task 解题报告
- Ubuntu Server 安装 硬盘分区方案
- FCK水印配置
- yum安装及常遇问题解决
- c++学习--iostream.h和iostream 区别
- 保留几位有效数字 多种方法实现,细细品味