在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目录
安装步骤:Delphi 正则表达式起步 with reg do begin Subject:= str; //要进行操作的字符串 RegEx := str1; //要被替换的子字符串 Replacement := str2; //被替换成的字符串 // (str1=>str2) ReplaceAll;//执行替换 str:= Subject; //取回替换后的字符串。 end //属性:preCaseLess 不区分大小写
reg.Options := [preCaseLess];
注意:不区分大小写后,中文替换会出现错误(中文也不区分了……) //|:或者 reg.RegEx := 'e|Delphi|0'; //将e、Delphi、0替换成想要的字符串 //+:重复一个或多个 reg.RegEx := 'ab+'; //将ab、abb、abbb等替换,最大替换原则 //*:重复0个或多个 reg.RegEx := 'ab*'; //将a、ab、abb、abbb等替换,最大替换原则 //?重复 0 个或 1 个 reg.RegEx := 'ab?'; //将a、ab替换,ab优先。 //{}大括号 //{num}:指定重复num次 //{num1, num2}:重复num1~num2次 //{num,}:重复num次或以上 //[ ]匹配范围,将与方括号中想匹配的“字符”匹配 //可以是:[a-z]、[A-Z]、[0-9]、[fajdl;gkhalu] //[^ ]不匹配范围,与匹配相反 注意:[ ]只用来匹配单个字符 //转义字符 // \d 匹配所有数字, 相当于 [0-9] // \D 匹配所有非数字, 相当于 [^0-9] // \w 匹配字母、数字与下划线_, 相当于 [A-Za-z0-9_] // \W 匹配非字母、数字与下划线_, 相当于 [^A-Za-z0-9_] // \s 匹配任何空白, 包括空格、制表、换页等, 相当于 [\f\n\r\t\v] // \S 匹配任何非空白, 相当于 [^\f\n\r\t\v] // \x 匹配十六进制的 ASCII // . 匹配除换行符以外的任何字符 { \f : 换页符 \n : 换行符 \r : 回车符 \t : 制表符(Tab) \v : 垂直制表符 } // \b 单词边界 reg.Subject := 'Delphi Delphi2007 MyDelphi'; reg.RegEx := '\bDelphi\b'; //前后边界 reg.Replacement := '◆'; reg.ReplaceAll; //结果为“◆ Delphi2007 MyDelphi” reg.RegEx := '\bDelphi'; //左边界 //结果为“◆ ◆2007 MyDelphi” reg.RegEx := 'Delphi\b'; //右边界 //结果为“◆ Delphi2007 My◆” // \B 非单词边界 // ^ 行首 reg.RegEx := '^Del'; //匹配在行首的 Del //返回: ◆phi Delphi2007 MyDelphi // \A 也标记行首 reg.RegEx := '\ADel'; //匹配在行首的 Del //返回: ◆phi Delphi2007 MyDelphi // $ 行尾 reg.RegEx := 'phi$'; //匹配在行尾的 phi //返回: Delphi Delphi2007 MyDel◆ // \Z 也标记行尾 reg.RegEx := 'phi\Z'; //匹配在行尾的 phi //返回: Delphi Delphi2007 MyDel◆ //正规表达式一般默认为贪婪匹配 //默认规则1.从最左边开始匹配 //默认规则2.在符合要求的情况下尽量匹配到最右边(符合1的前提下匹配最长的串) reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>'; reg.RegEx := '<.*>'; //将会全部匹配, 因为两头分别是: < 和 > reg.Replacement := '◆'; //贪婪匹配,结果为“◆” reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>'; reg.RegEx := '<.*?>'; // *? 是非贪婪匹配方法之一, 将匹配每组 <> reg.Replacement := '◆'; //非贪婪匹配,结果为“◆◆◆标题◆◆◆内容◆◆” //区别是加了个问号。 引用子表达式 //1. 子表达式要用“( )”括起 //2. 从左到右依次为\1、\2、\3……按左括号排序,包括嵌套的字表达式 //3. \0 表示整个表达式 reg.Subject := 'one two three ten'; reg.RegEx := '(t)(\w+)'; reg.Replacement := '[\1-\2:\0]'; // \1\2 分别引用对应的子表达式; \0 引用整个表达式 //结果: one [t-wo:two] [t-hree:three] [t-en:ten] //(?=xxx) 匹配到xxx之前的位置 //(?<=xxx)匹配到xxx之后的位置 //把上面的“=”改为“!”,不匹配原来得到的结果 reg.Subject := 'Delphi 6; Delphi 7; Delphi 2007; Delphi Net'; reg.RegEx := 'Delphi (?=2007)'; // ?= reg.Replacement := '◆'; //结果: Delphi 6; Delphi 7; ◆2007; Delphi Net reg.Subject := '111, 222, ¥333, ¥444'; reg.RegEx := '(?<=¥)\d{3}'; // ?<= reg.Replacement := '◆'; reg.ReplaceAll; //结果: 111, 222, ¥◆, ¥◆ reg.Subject := '111, 222, ¥333, ¥444'; reg.RegEx := '(?<!¥)\d{3}'; // ?<! reg.Replacement := '◆'; //结果: ◆, ◆, ¥333, ¥444 // preCaseLess: 不区分大小写, 相当于其他语言中的 i // preAnchored: 只匹配字符串开始, 相当于 ^, 不过还是有区别的 // preDollarEndOnly: 让 $ 只匹配字符串结尾 // preMultiLine: 多行匹配, 相当于其他语言中的 m // preSingleLine: 让特殊符号 . 能够匹配换行符 (. 的本意是匹配换行符以外的任意字符) // preUnGreedy: 指定为非贪婪模式 // preExtended: 指定为扩展模式 //抄自:万一的博客http://www.cnblogs.com/del/archive/2007/12/21/1009363.html
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论