Только начал разбираться с регулярками. Наваял гигантский код, спасибо msi2102
Код
Sub Regulyarki()
Dim objRegexp As RegExp, myMatch As Match, colMatches As MatchCollection
Dim i, k, myStr As String, CompStr As String, NewStr As String
Set objRegexp = New RegExp
objRegexp.Global = True
objRegexp.IgnoreCase = True
i = 1
myStr = CStr(Cells(1, 1))
While i < Len(myStr)
i = i + 1
objRegexp.Pattern = "" & Mid(myStr, i, 1) & "(" _
& Mid(myStr, i, 1) & "){1,}"
Set colMatches = objRegexp.Execute(myStr)
For k = 0 To colMatches.Count - 1
Set myMatch = colMatches.Item(k)
CompStr = objRegexp.Replace(myMatch, myMatch.SubMatches(0))
NewStr = Replace(myStr, myMatch, CompStr)
myStr = NewStr
Debug.Print NewStr
Next k
Wend
Cells(2, 1) = myStr
End Sub
Но, как оказалось, можно написать короче, как это сделал Jack Famous в этой теме в 9 сообщении:
Код
Set REdd = New RegExp: REdd.Global = True: REdd.Pattern = "([A-Za-zЁёА-я])(?:\1)+"
If REdd.test(vl) Then vl = REdd.Replace(vl, "$1")
Я понял, что я Лопух, и надо углубляться больше в метасимволы. Что можно почитать по ним в наиболее полном виде?
Фридл Дж. Регулярные выражения. Библиотека программиста. Бен Форта Освой самостоятельно регулярные выражения (regexp). Ян Гойвертс, Стивен Левитан Регулярные выражения. Сборник рецептов
чтобы легче было разбираться рассматривайте составление Pattern как процесс программирования, при котором RegExp производит поиск нужных данных в тексте по алгоритму, записанному в Pattern а по регулярным выражениям (как и по любому языку программирования, где используя абстрактные, но строго определенные конструкции, мы получаем нужные результаты при обработке данных) написаны уже тома... читать-не-перечитать удачи!