ab.com コミュニティ

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

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




新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 
作成者 メッセージ
 記事の件名: 正規表現テスト
投稿記事Posted: 2007年11月15日(木) 13:26 
最近動きが無いね

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


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 1 件の記事 ] 

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


オンラインデータ

このフォーラムを閲覧中のユーザー: Bing [Bot] & ゲスト[11人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

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