トップページに戻る
次の正規表現パズルへ
前の正規表現パズルへ
9-1 可変長戻り読み
正規表現パズル
置換を使って、
行ごとに
行頭から数えた出現回数が、
2回目以降の文字を削除する。
置換前
置換後
6-2 出現回数が2回目以降なら削除その1のアレンジ問題です。
対象データ
AAABBCCDDE
ABCDDEE
AABBCCDD
ABBBCCAAD
XXXXXXXXXX
YYYAAAYYY
ZZZZZ
正規表現
(.)(?<=\1.*\1)
を削除
解説
VB2003でのソースと実行結果
Imports System.Text.RegularExpressions
Module Module1
Sub Main()
Dim array(6) As String
array(0) = "AAABBCCDDE"
array(1) = "ABCDDEE"
array(2) = "AABBCCDD"
array(3) = "ABBBCCAAD"
array(4) = "XXXXXXXXXX"
array(5) = "YYYAAAYYY"
array(6) = "ZZZZZ"
For i As Integer = 0 To array.GetUpperBound(0)
Console.WriteLine("----------------------")
Console.WriteLine("置換前" & array(i))
array(i) = Regex.Replace(array(i), "(.)(?<=\1.*\1)", "")
Console.WriteLine("置換後" & array(i))
Next i
Console.ReadLine()
End Sub
End Module
----------------------
置換前AAABBCCDDE
置換後ABCDE
----------------------
置換前ABCDDEE
置換後ABCDE
----------------------
置換前AABBCCDD
置換後ABCD
----------------------
置換前ABBBCCAAD
置換後ABCD
----------------------
置換前XXXXXXXXXX
置換後X
----------------------
置換前YYYAAAYYY
置換後YA
----------------------
置換前ZZZZZ
置換後Z