Посмотрите на регулярное выражение для VBA?
Есть ли способ сделать негативные и позитивные взгляды в регулярных выражениях VBA?
Я не хочу совпадать, если строка начинается с "A", поэтому в настоящее время я делаю ^A в начале шаблона, а затем удаляю первый символ match(0). Очевидно, не самый лучший метод!
Я использую объект regExp.
2 ответа
VBA предлагает позитивные и негативные взгляды, но скорее непоследовательно.
Лучший пример использования Regex с VBA, который я видел, это статья Патрика Мэтьюса
[Обновлен пример использования Execute
скорее, чем Replace
]
Хотя я не совсем уверен в вашем использовании, вы можете использовать такую функцию с
- пропускает любые слова, начинающиеся с A
для всех слов, не начинающихся с a, он возвращает все, начиная со второго символа (используя подстроку - шаблон внутри
(
а также)
субматч 1 -Sub TestString() MsgBox ReducedText("cfat dcat") MsgBox ReducedText("Sat all over the hat again") End Sub Function ReducedText(strIn As String) As String Dim objRegex As Object Dim objRegMC As Object Dim objRegM As Object Dim strOut As String Set objRegex = CreateObject("vbscript.regexp") With objRegex .IgnoreCase = True 'not needed if matching the whole string .Global = True .Pattern = "\b[^a\s]([a-z]+)" If .test(strIn) Then Set objRegMC = .Execute(strIn) For Each objRegM In objRegMC strOut = strOut & objRegM.submatches(0) & vbNewLine Next ReducedText = strOut Else ReducedText = "Starts with A" End If End With End Function
Как насчет помещения ^A в неперехваченную группу и использования свойства SubMatches объекта Match для получения подходящего значения?