Что мне нужно сделать, это добавить знак плюс +
перед каждым предлогом в ячейке? По какой-то причине \b
не будет работать для меня.Границы слов Excel VBA (замена предлогов)
В JavaScript, он должен работать нормально:
(\bof\b|\bat\b)
//change with
+$1
Но VBA скрипт в Excel с тем же регулярным выражением ничего не соответствует.
Пример:
И отдохнуть от них было для него спасением от мук.
Результат должен быть:
И отдохнуть +от них было +для него спасением +от мук.
Обратите внимание, что "отдохнуть" слово имеет "от" внутри. Сам
код (взято где-то здесь):
Sub ReplaceWithRe()
Dim re As Object 'RegExp
Dim rng As Range, cl As Range
Dim sh As Worksheet
Dim wb As Workbook
Dim sReplace As String
Dim aReplace(0 To 1, 0 To 1) As String
Dim i As Long
Set wb = ActiveWorkbook
Set re = CreateObject("vbscript.regexp") ' New RegExp
re.Global = True
re.IgnoreCase = False
re.MultiLine = True
' Load array of patterns and replacements
aReplace(0, 0) = "(\bот\b|\bдля\b)"
aReplace(0, 1) = "+$1"
For Each sh In wb.Worksheets
On Error Resume Next
Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
If Err.Number <> 0 Then
Err.Clear
Else
On Error GoTo 0
For Each cl In rng
sReplace = cl.Value
' Test each cell for each pattern, replace when found
For i = 0 To UBound(aReplace, 1)
re.Pattern = aReplace(i, 0)
If re.Test(sReplace) Then
sReplace = re.Replace(sReplace, aReplace(i, 1))
End If
Next
cl.Value = sReplace
Next
End If
Next
End Sub
Я думаю, что я получил подсказку. Похоже, что это регулярное выражение отлично работает с латинскими символами, но с кириллицей оно не возвращает совпадений. Я обновил пример.
Ваш код для нас, чтобы проверить? –
@JLILIAmen код добавлен –
Для данного рисунка нет совпадений. Это должно быть: aReplace (0, 0) = "(\ bon \ b \ \ bwith \ b)" для вашего образца текста. – Rory