スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LS2J: 正規表現を使った文字列置換

2008年11月17日 03:01

 前日の例は、「これなら@ContainsとかをLotusScriptで呼び出せば出来る!」とか思う人も多いと思うので、正規表現の力をアピールするならもうちょっと複雑なマッチングの方がよかったのかもしれません。

なので今日は正規表現らしい文字列処理の例として、文字列置換の例を出しておきます。ログのスレッドIDを消すようなパターン。
あとは、1行に複数の値がマッチする場合も例として挙げておくと、一度に全部置換してくれるので、正規表現の力が分かってもらえる気がしたのですが。。実際LotusScriptでこのような処理はどうやって対処しているのでしょうか。自分が開発する事になってこの手の処理をしようと思ったら専用のライブラリを作ってしまうのかなあ・・・と思ってしまうのですが、実際使われている方の話などが聞けたらいいな、と思います。

シェルとかで文字列処理をしていると、スクリプト言語の文字列処理が物足りなくなってしまうので、正規表現に恋しくなって、案外本気でこの処理を組み込みたい・・・、て思う人もいるのかもしれません。



Uselsx "*javacon"

Sub Click(Source As Button)
Dim b As Boolean
teststr$ = "[09D4:000D-0D50] 2008/09/18 15:45:26 HTTP Server: Error - Memory allocation error"
' Thread ID部分([09D4:000D-0D50])にマッチする正規表現
regex$ = "\[[\p{Alnum}:-]*\]"
' regex$ = "\[[a-zA-Z0-9:-]*\]"
replacedstr$ = ""
result$ = ReplaceString(testStr$,regex$, replacedstr$)
Msgbox "Input: " & teststr$ & Chr(13) & "Pattern: " & regex$ & " -> " & replacedstr$ & Chr(13) & result$
End Sub

Function ReplaceString(InputStr As String , RegEx As String, ReplacedStr As String) As String
' RepleaceString: 正規表現を利用した文字列置換関数
' InputStr: 置換を行う元の文字列
' RegEx: 置換を行う文字列パターンをあらわす正規表現
' ReplacedStr: 置換する文字列
' 戻り値: 置換を行った文字列
' 注: 必ず Uselsx "*javacon" の宣言を行う事
Dim j As JavaSession
Dim c As JavaClass
Dim pattern As JavaObject
Dim matcher As JavaObject
Dim e As JavaError
Set j = New JavaSession
Set c = j.GetClass("java.util.regex.Pattern")
Set pattern = c.compile(RegEx)
Set matcher = pattern.matcher(InputStr)
ReplaceString = matcher.replaceAll(ReplacedStr)
End Function



コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/19-087b189f
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。