- 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,'......');
- 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 = '(?<name1>[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,'11',[roSingleLine]);
- Memo1.Lines.Add(rStr);
- Memo1.Lines.Add('--------------------');
-
- rStr := TRegEx.Replace(txt,'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); //...,AB C
- rStr := TRegEx.Replace('ABC,'...');
- Memo1.Lines.Add(rStr); //ABC,...
- Memo1.Lines.Add('--------------------');
-
- {使用注释}
- rStr := TRegEx.Replace('ABC123','ABC#*123',[roIgnorePatternSpace]);
- Memo1.Lines.Add(rStr); //...123
- rStr := TRegEx.Replace('ABC123','...');
- Memo1.Lines.Add(rStr); //...
- end;
- {*********************
- ...,AB C
- ABC,...
- --------------------
- ...123
- ...
- **********************}
-
- {选项集合}
- procedure TForm1.Button7Click(Sender: TObject);
- const
- pattern = '^Delphi';
- txt = 'DELPHI DELPHI DELPHI'#13#10'delphi delphi delphi';
- begin
- Memo1.Text := TRegEx.Replace(txt,[roIgnoreCase,roMultiLine]);
- end;
- {*********************
- ...... DELPHI DELPHI
- ...... delphi delphi
- **********************}