у меня есть функция внутри макроса, использующая регулярное выражение в Excel 2016 (VBA), которая должна удалить все числа из текста, чтобы я в основном получал только алфавитные символы. Загвоздка в том, что эти числа не только цифры, но они также могут быть римскими цифрами (только включая римские цифры от одного до четырех, то есть I, II, III и IV). В качестве примера возьмем следующий список возможных пунктов:
Program Manager 3
Systems Engineer 3
Secretary III 12345
Consultant
IT Instructor 3
Computer Operations Manager 1
User Support Specialist 2
Engineering Tech II 12345
IT Instructor 2
Network Tech 3
моя функция использует следующий регулярный VBA код выражения для замены цифр и римских цифр (я не беспокоюсь о обрезке или чем-либо еще на данный момент):
Public Function RemoveNumbers(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "[0-9]|s[i]+|s[iv]$"
RemoveNumbers = .Replace(Txt, "")
End With
End Function
как правило, это работает нормально, за исключением того, что я столкнулся с одной проблемой. Мое регулярное выражение неправильно изменяет фразу IT инструктор 2 и превращает его в ITnstructor (из-за пробела, а затем слово инструктор, который начинается с I, который совпадает с римской цифрой). Я пробовал находить ответ онлайн и протестировали много вариантов, чтобы получить регулярное выражение, чтобы исключить фразу инструктор в поиск, но я не могу заставить его работать. Некоторые из шаблонов, которые я пытался использовать, включают:
.Pattern = "b(!Instructor)b|[0-9]|s[i]+|s[iv]$"
.Pattern = "b(!Instructor)bw+|[0-9]|s[i]+|s[iv]$"
.Pattern = "(!Instructorb)|[0-9]|s[i]+|s[iv]$"
...etc
и поскольку я должен удалить римскую цифру (I), я не могу использовать следующее в качестве обходного пути:
.Pattern = "[0-9]|s[i]{2,}|s[iv]$"
можно ли исключить строку (например, Instructor) из поиска с помощью регулярных выражений VBA Excel 2016? Если так, смогите кто-то указал мне правильное направление, как исключить элементы во время регулярного выражения VBA?
спасибо