2025/12/13

Object Pascal Regular Expression

Object Pascal 的自由軟體實作 Free Pascal 內建 Regular Expression 的支援,實作的部份在 RegExpr unit。

下面是使用 Free Pascal 解 1-9 位數不重複印出來的練習問題:

{$ifdef FPC} {$mode delphi} {$endif}

{$ifdef MSWINDOWS} {$apptype CONSOLE} {$endif}

program MyNumber;

uses sysutils, math, RegExpr;

var 
  num : integer;
  max : longint;
  index: longint;
  numstr: string;
  RegexObj: TRegExpr;

begin

  Write('Please give a number: ');
  ReadLn(num);

  if (num < 1) or (num > 9) then
    begin
      WriteLn('Out of range.');
      Exit;
    end;

  max := round(intpower(10.0,  num)) - 1;

  RegexObj := TRegExpr.Create;
  RegexObj.Expression := '1.*1|2.*2|3.*3|4.*4|5.*5|6.*6|7.*7|8.*8|9.*9|0.*0';

  try
    for index := 1 to max do
      begin
        numstr := IntToStr(index);
        if RegexObj.Exec(numstr) then
          continue
        else
          WriteLn(numstr);
      end;
  finally
    RegexObj.Free;
  end;
end.

參考連結

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。