您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页官方的正则表达式组件 RegularExpressions (4) 表达式选项

官方的正则表达式组件 RegularExpressions (4) 表达式选项

来源:保捱科技网
TRegExOption = (

roNone, //无

roIgnoreCase, //不区分大小写

roMultiLine, //多行模式; 可使 ^ 和 $ 匹配每个行首或行尾

roExplicitCapture, //只捕获指定了名称或编号的子表达式 roCompiled, //预编译表达式; 这在反复使用更有效率 roSingleLine, //单行模式; 使 . 也可匹配换行符 roIgnorePatternSpace //忽略注释和未经转义的空白 );

uses RegularExpressions;

{roIgnoreCase}

procedure TForm1.Button1Click(Sender: TObject); const

pattern = '[A-Z]+\\d+';

txt = 'AAA1 bbb2 aa11 bb22 A111 B222 AAAA'; var

match: TMatch; begin

Memo1.Clear;

for match in TRegEx.Matches(txt, pattern, [roIgnoreCase]) do

begin

Memo1.Lines.Add(match.Value); end;

Memo1.Lines.Add('----------');

for match in TRegEx.Matches(txt, pattern) do begin

Memo1.Lines.Add(match.Value); end; end;

{********************* AAA1 bbb2 aa11 bb22 A111 B222

---------- AAA1 A111 B222

**********************}

{roMultiLine}

procedure TForm1.Button2Click(Sender: TObject); const

txt = 'Delphi Delphi Delphi'#13#10'Delphi Delphi Delphi'; var

rStr: string; begin

Memo1.Clear; {行首}

rStr := TRegEx.Replace(txt, '^Delphi', '......', [roMultiLine]);

Memo1.Lines.Add(rStr);

Memo1.Lines.Add('--------------------');

rStr := TRegEx.Replace(txt, '^Delphi', '......'); Memo1.Lines.Add(rStr);

Memo1.Lines.Add('--------------------'); {行尾}

rStr := TRegEx.Replace(txt, 'Delphi$', '......', [roMultiLine]);

Memo1.Lines.Add(rStr);

Memo1.Lines.Add('--------------------');

rStr := TRegEx.Replace(txt, 'Delphi$', '......'); Memo1.Lines.Add(rStr); end;

{********************* ...... Delphi Delphi ...... Delphi Delphi --------------------

...... Delphi Delphi Delphi Delphi Delphi -------------------- Delphi Delphi ...... Delphi Delphi ...... -------------------- Delphi Delphi Delphi Delphi Delphi ...... **********************}

{roExplicitCapture}

procedure TForm1.Button3Click(Sender: TObject); const

pattern1 = '([A-Z]+)(\\d+)';

pattern2 = '(?[A-Z]+)(\\d+)'; pattern3 = '([A-Z]+)(?<3>\\d+)'; txt = 'AA11 BB22'; var

match: TMatch; group: TGroup; begin

Memo1.Clear;

for match in TRegEx.Matches(txt, pattern1, [roExplicitCapture]) do begin

for group in match.Groups do begin

Memo1.Lines.Add(group.Value); end; end;

Memo1.Lines.Add('--------------------');

for match in TRegEx.Matches(txt, pattern1) do //此处把 pattern1 换做 pattern2 或 pattern3 均可 begin

for group in match.Groups do begin

Memo1.Lines.Add(group.Value); end; end;

Memo1.Lines.Add('--------------------');

for match in TRegEx.Matches(txt, pattern2, [roExplicitCapture]) do begin

for group in match.Groups do begin

Memo1.Lines.Add(group.Value); end; end;

Memo1.Lines.Add('--------------------');

for match in TRegEx.Matches(txt, pattern3, [roExplicitCapture]) do begin

for group in match.Groups do begin

Memo1.Lines.Add(group.Value); end; end; end;

{********************* AA11 BB22

-------------------- AA11 AA 11 BB22 BB 22

-------------------- AA11 AA BB22 BB

-------------------- AA11 11 BB22 22

**********************}

{roCompiled}

procedure TForm1.Button4Click(Sender: TObject);

var

reg: TRegEx; begin

reg := TRegEx.Create('\\d+', [roCompiled]); Memo1.Text := reg.Replace('AA11 BB22', '..'); //AA.. BB.. end;

{roSingleLine}

procedure TForm1.Button5Click(Sender: TObject); const

pattern = '[A-Z]{1}.{1}';

txt = 'A B C D'#13#10'A B C D'#13#10'A B C D'; var

rStr: string; begin

Memo1.Clear;

rStr := TRegEx.Replace(txt, pattern, '11', [roSingleLine]);

Memo1.Lines.Add(rStr);

Memo1.Lines.Add('--------------------');

rStr := TRegEx.Replace(txt, pattern, '11'); Memo1.Lines.Add(rStr); end;

{********************* 11111111 11111111 111111D

-------------------- 111111D 111111D 111111D

**********************}

{roIgnorePatternSpace}

procedure TForm1.Button6Click(Sender: TObject); var

rStr: string; begin

Memo1.Clear;

{忽略空白}

rStr := TRegEx.Replace('ABC,A B C,AB C', 'AB C', [roIgnorePatternSpace]);

, '...' Memo1.Lines.Add(rStr); //...,A B C,AB C

rStr := TRegEx.Replace('ABC,A B C,AB C', 'AB C', '...'); Memo1.Lines.Add(rStr); //ABC,A B C,... Memo1.Lines.Add('--------------------');

{使用注释}

rStr := TRegEx.Replace('ABC123', 'ABC#*123', '...', [roIgnorePatternSpace]);

Memo1.Lines.Add(rStr); //...123

rStr := TRegEx.Replace('ABC123', 'ABC#*123', '...'); Memo1.Lines.Add(rStr); //... end;

{********************* ...,A B C,AB C ABC,A B C,...

-------------------- ...123 ...

**********************}

{选项集合}

procedure TForm1.Button7Click(Sender: TObject); const

pattern = '^Delphi';

txt = 'DELPHI DELPHI DELPHI'#13#10'delphi delphi delphi'; begin

Memo1.Text := TRegEx.Replace(txt, pattern, '......', [roIgnoreCase, roMultiLine]); end;

{********************* ...... DELPHI DELPHI ...... delphi delphi **********************}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务