Excel VBA Найти и заменить текст в строке с помощью цикла - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь заменить весь текст в строке между шаблоном "& CC [число]: [число]" и заменить его на "==" .

Вот строка. "T &CC3:5 Q8 Party/ Self-Identify&CC6:8 Male&CC9:11 Female&CC12:15 Q1 Vote"

Это то, что мне нужно, чтобы он выглядел T &CC3:5==&CC6:8==&CC9:11==&CC12:15==

Я знаю, что мне нужно l oop через эту строку, но я не уверен, что лучший способ установить это до.

Dim stringOne As String
Dim regexOne As Object
Set regexOne = New RegExp

regexOne.Pattern = "([Q])+[0-9]"
regexOne.Global = False
stringOne = "T &CC3:5 Q8 Party/ Self-Identify&CC6:8 Male&CC9:11 Female&CC12:15 Q1 Vote"

Debug.Print regexOne.Replace(stringOne, "==")
End Sub

Я также исследовал, используя это регулярное выражение regexOne.Pattern = "([&])+[C]+[C]+[0-9]+[:]+[0-9]"

Я планирую со временем установить переменную stringOne на Range("A1").Text

1 Ответ

2 голосов
/ 03 марта 2020

Вы можете немного упростить шаблон и использовать группу захвата и позитивный прогноз

(&CC[0-9]+:[0-9]+).*?(?=&C|$)

Пояснение

  • ( Группа захвата 1
    • &CC[0-9]+:[0-9]+ Соответствие &CC 1+ цифр: и 1+ цифры
  • ) Закрытая группа
  • .*? Соответствие 0 + раз любой символ, кроме новой строки, не жадной
  • (?=&C|$) Позитивный прогноз, утверждайте, что прямо справа либо &C, либо конец строки

Regex demo

При замене используйте первую группу захвата, за которой следует ==

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...