Delphi XE Pro - 正規表現で一致する文字を抽出して表示する
ひとつだけの場合
uses
RegularExpressions 追加して正規表現を使えるようにする。

procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
hoge: TMatch;
begin
 Str := 'ふかふかふか(やってみる)(lv196799094)';

 if TRegEx.IsMatch(Str,'lv\d+') then
  begin
   hoge := TRegEx.Match(Str,'lv\d+');
   ShowMessage(hoge.Value);   出力結果: lv196799094
  end;
end;

試しに Str := 'ふかふかふか(やってみる)(lv196799094)(lv200000000)'; とした場合にも出力結果はlv196799094となった。


複数個当てはまる場合
procedure TForm1.Button2Click(Sender: TObject);
var
 i: Integer;
 str, tempStr: string;
 hoges: TMatchCollection;
 SortList : TStringList;
begin
 Str := 'ふかふかふか(やってみる)(lv20000000000)(lv10000)(lv196799094)';

 if TRegEx.IsMatch(Str,'lv\d+') then
  begin
   hoges := TRegEx.Matches(Str,'lv\d+');
    if hoges.Count = 1 then
     
tempStr := hoges.Item[0].Value
    else // 複数候補がある場合は最大値を適用する
    begin    
     if hoges.Count > 1 then
      SortList := TStringList.Create;
      for I := 0 to hoges.Count - 1 do
       SortList.Add( hoges.Item[I].Value );
      SortList.Sort;
      for I := 0 to SortList.Count - 1 do //ソートされて最後が最大値になっているはず
       tempStr := SortList.Strings[i];
    end;
   ShowMessage(tempStr);   出力結果: lv20000000000
  end;
end;



[PR]

by arigayas | 2014-11-29 05:07 | Delphi Programming | Trackback | Comments(0)
トラックバックURL : http://arigayas.exblog.jp/tb/23805379
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
<< 2015年1月からのアニメ [2ch] [コピペ] - ... >>