//IRegex 的属性与方法 IRegex.GetGroupNames; { 子表达式编号数组, 譬如有两个子表达式, 会得到 0,1,2; 这基本无用 }IRegex.GetGroupNumbers; { 同上, 只是获取的是整数数组 }IRegex.GroupNameFromNumber(); { 应该是从子表达式编号获取子表达式的名称; 但没有实现, 来回都是编号 }IRegex.GroupNumberFromName(); { 同上一个是反着的; 基本都无用 }IRegex.IsMatch(); { 判断是否有所匹配; 如果只想知道是否匹配到, 用它应该最快 }IRegex.Match(); { 获取一个 IMatch 对象, 这是第一个匹配结果 }IRegex.Matches(); { 获取一个 IMatchCollection 对象; 这是匹配到的 IMatch 的集合 }IRegex.Replace(); { 替换 }IRegex.Split(); { 根据表达式分割字符串; 当前版本没有实现好, 暂时无用 }IRegex.ToString; { 获取表达式文本 }IRegex.Save(); { 把表达式保存到流 }IRegex.Load(); { 从流中取回由 Save 保存的表达式 }IRegex.Options; { 选项集合, 是只读的; 要设置只能从 Create 方法中 }{这其中需要重新看看的只有 Replace}//IRegex 是通过 TRegex 实现的, TRegex 还有下面几个静态类方法:TRegex.Escape(); { 编码需要转义的字符 }TRegex.Unescape(); { 还原 Escape 的编码 }TRegex.IsMatch(); { 同 IRegex.IsMatch }TRegex.Match(); { 同 IRegex.Match }TRegex.Matches(); { 同 IRegex.Matches }TRegex.Replace(); { 同 IRegex.Replace }TRegex.Split(); { 同 IRegex.Split }{ 使用这些个类方法会让代码更简单 }
uses RegularExpressions;procedure TForm1.FormCreate(Sender: TObject);var Match: IMatch; MatchCollection: IMatchCollection; Pattern, Input, str: string;begin Pattern := '([A-Za-z]+)(\d+)'; Input := 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; // Match := TRegex.Match(Input, Pattern); ShowMessage(Match.Value); { AAA1 } // MatchCollection := TRegex.Matches(Input, Pattern); ShowMessage(IntToStr(MatchCollection.Count)); { 4 } // str := TRegex.Replace(Input, Pattern, '◆'); ShowMessage(str); { ◆ ◆ ◆ ◆ ◆ ◆ AAAA }end;
uses RegularExpressions;procedure TForm1.FormCreate(Sender: TObject);var str: string;begin str := TRegex.Escape('.$^{[(|)*+?\'); ShowMessage(str); (* \.\$\^\{\[\(\|\)\*\+\?\\ *) str := TRegex.Unescape(str); ShowMessage(str); (* .$^{[(|)*+?\ *)end;
uses RegularExpressions;procedure TForm1.FormCreate(Sender: TObject);var Regex: IRegex; Match: IMatch; Pattern, Input, str: string;begin Pattern := '([A-Za-z]+)(\d+)'; Input := 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; Regex := TRegex.Create(Pattern); { 替换全部 } str := Regex.Replace(Input, '◆'); ShowMessage(str); { ◆ ◆ ◆ ◆ ◆ ◆ AAAA } { 只替换前两个匹配 } str := Regex.Replace(Input, '◆', 2); ShowMessage(str); { ◆ ◆ AA11 BB22 A111 B222 AAAA } { 从第 10 个字符开始, 只替换两个匹配 } str := Regex.Replace(Input, '◆', 2, 10); ShowMessage(str); { AAA1 BBB2 ◆ ◆ A111 B222 AAAA } end;
联系客服