ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 01:03

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - 正規表現テスト
作成者 メッセージ
  記事の件名:  正規表現テスト  引用付きで返信する
最近動きが無いね

http://www.2chab.net/uploader/src/up0053.sbp
↑をインクルードするなりなんなりします
コード:
#N88BASIC

'機能が使えるかどうかチェック
If RegexAvailable() Then
	Print "利用可能"
Else
	Print "利用不可能"
	End
End If

Print "------------------------------------------"
Print "RegexMatchテスト"
Print
Print "target=ABCDEFGHIJKLMN","pattern=([C-J]{2})([E-M]{2})"

Dim pMatches As *C_Matches,i As Long,j As Long
pMatches = RegexMatch("ABCDEFGHIJKLMN","([C-J]{2})([E-M]{2})")
If pMatches=NULL Then Print "失敗":End

Print "------------------------------------------"
Print "マッチ数",pMatches->MatchCount()
For i=0 To pMatches->MatchCount()-1
	Print "------------------------------------------"
	Print "インデックス      "+Str$(i)
	Print "文字列            "+MakeStr(pMatches->MatchString(i))
	Print "位置              "+Str$(pMatches->MatchFirst(i))
	Print "一致長            "+Str$(pMatches->MatchLength(i))
	Print "後方参照"
	For j=0 To pMatches->SubMatchCount(i)-1
		Print "                  $"+Str$(j)+"="+MakeStr(pMatches->SubMatchString(i,j))
	Next
Next

Delete pMatches

Print "------------------------------------------"
Print "RegexReplace Test"
Print
Print "target=ABCDEFGHIJKLMN","pattern=([C-J]{2})([E-M]{2})","replace=$1$2$2$1"
Print "------------------------------------------"

Dim recive As *Byte
recive = RegexReplace("ABCDEFGHIJKLMN","([C-J]{2})([E-M]{2})","$1$2$2$1")
Print "return="+MakeStr(recive)
free(recive)
使い方

RegexMatch
マッチ対象文字列とパターン文字列を引数としてC_Matchesクラスのポインタを返します
Match~、SubMatch~という名前のメソッドでマッチ情報を取り出せます

MatchStringとSubMatchStringの戻り値、MatchInfoのMatchStr引数に返される文字列は全て読み取り専用です
細工するならコピーして使ってください

失敗した場合は現状ではNULLを返してます

RegexReplace
マッチ対象文字列とパターン文字列と置換文字列を引数として
パターンマッチ箇所を置換文字列で置き換えた文字列を返します
返される文字列のバッファはmallocで確保してるのでfreeして下さい

失敗したときはNULLを返します
String型で返すように改造するのも良いかもしれません
その場合失敗の判定が面倒そうですが

利用可能な正規表現について
VBScript互換です。オプションは
大文字小文字を区別、複数行テキスト有効、全てのマッチを返す
にしてあります
http://msdn.microsoft.com/library/ja/de ... rences.asp
投稿記事 Posted: 2007年11月15日(木) 13:26

全ての表示時間は UTC+09:00 です


ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean