Delphi に正規表現の コンポーネント ? or ライブラリ ?を追加して関数のヘルプの読み方を覚えた。
Delphi XE から正規表現がサポートされたらしいけどDelphi 初心者には(使い or 書き)方がよくわからなかった。

自分としてはメールアドレスの入力欄にちゃんとメールアドレスが入力されたかどうかをチェックしたい!と思って
ログイン設定
正規表現 の機能を追加するために 「Delphi 正規表現」でググって
Delphi用正規表現ユニット「SkRegExp」」 に行き着いたので ここから最新版をダウンロード。



インストール

この「SkRegExp」(コンポーネント ? or ライブラリ ?)の場合は、ダウンロードした圧縮ファイルを適当なフォルダに解凍して、 SkRegExpConst.pas と SkRegExpW.pas と UnicodeProp.pas
Project フォルダにコピペすればインストール完了。
使っている Delphi バージョンに応じて 「2010 or later」フォルダから SkRegExpConst.pas をコピペして置き換える必要がある。

使用方法

で、「SkRegExp」を使う場合には、*.pasファイルの冒頭にある unit の uses 節に、SkRegExpW を記述するだけ。

関数の書き方

しかし、Delphi 初心者には、ヘルプの関数のページを見ても関数の使い方がわからない!!
ヘルプには

RegIsMatch 関数

構文
function RegIsMatch(const ARegExpStr, AInputStr: REString; AOptions: TREOptions): Boolean;

パラメータ:
ARegExpStr: 正規表現パターン
AInputStr: 対象文字列
AOption: 正規表現オプション

返り値:
ARegExpStr が AInputStr にマッチすれば True

概要:
文字列 AInputStr が正規表現 ARegExpStr にマッチしたとき True を返します。ARegExpStr に文法エラーがあると例外が起こります。

とあってソースに
 function RegIsMatch(const ARegExpStr, AInputStr: REString; AOptions: TREOptions): Boolean;
って書けば、良いのかなと思ってコピペして追記してみたら構文エラーの嵐!!

これでは埒が明かないと思ったのでTwitterで聞いてみたところ、
文字列が大文字のアルファベットのみか調べる時は
RegIsMatch('[A-Z]+', 'あいうえお')
こんな感じとか、これはFalseが返ってきます
と教えてもらえて理解出来たので歓喜&感謝!!





教えてもらったことにちょっと手を加えて
procedure TForm2.LoginOkBtnClick(Sender: TObject);
begin
if (RegIsMatch('[A-Z]+', 'あいうえお')) then
ShowMessage('OK')
else
ShowMessage('NG');
end;

って書いてあいうえおの部分をABCとかに書き換えて納得してました。

しかし XE から標準でサポートされた正規表現の(使い or 書き)方がさっぱりわからないや(苦笑)
[PR]

by arigayas | 2011-02-17 21:02 | Delphi Programming | Trackback(1) | Comments(0)
トラックバックURL : http://arigayas.exblog.jp/tb/14959574
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Tracked from arigayasのblog at 2011-02-25 12:01
タイトル : たぶん、Delphi XE 標準の正規表現を使う基本がわ..
たぶん、Delphi XE 標準の正規表現を使い方がわかったかも。という事でメモ。 使いたいソース(*.pasファイル)の冒頭にある interface の uses 節に RegularExpressions を追加します。 Delphi 標準の正規表現のヘルプを見て使いたい関数を選びます。 例えば、IsMatch を選びます。 function IsMatch(const Input: string): Boolean; overload; function IsMatch...... more
<< Delphi XE 標準の正規... Delphi XE Profe... >>