Я пытаюсь найти в своей таблице Excel любую ячейку, значение которой начинается с числа, за которым следует точка, но это не работает.
Кто-нибудь знает почему нет?
Период .
имеет особое значение в регулярном выражении, это означает "Соответствует любому отдельному символу".
Если вы хотите соответствовать буквальному периоду .
вам нужно избежать особого значения. \
используется в качестве escape-символа (например, "\."
, "\\"
).
Таким образом, ваше выражение должно быть "[0-9]\."
чтобы соответствовать буквальному периоду .
,
Чтобы сопоставить более одной цифры, за которой следует точка, используйте "[0-9]+\."
(+
используется, чтобы соответствовать предыдущему выражению один или несколько раз).
См. VBA RegEx: Как оценить и использовать «Регулярные выражения» для получения дополнительной информации.
Примечание. Насколько мне известно, cells.find()
не поддерживает регулярные выражения.
Вам нужно использовать класс RegExp
.
Регулярные выражения (RegExp) - это класс, который предлагает невероятно мощные возможности синтаксического анализа текста, в частности, позволяет пользователям находить (и даже заменять) подстроки в больших текстовых записях, которые соответствуют определенному шаблону. Эта статья содержит основную информацию о реализации RegExp на VBScript и о том, как ее использовать, чтобы получить надежные возможности анализа текста в проектах Visual Basic 6 (VB6) и Visual Basic для приложений (VBA). Обладая небольшим знанием правил и некоторым воображением, вы можете создавать невероятно гибкие и / или сложные шаблоны.
...
Добавив эти функции в свои проекты VB6/VBA, вы можете быстро и легко внедрить функции RegExp в свои приложения. Если вы являетесь пользователем Microsoft Office, вы даже можете использовать эти функции в формулах рабочего листа для Microsoft Excel или в запросах в Microsoft Access.
Источник Использование регулярных выражений в Visual Basic для приложений и Visual Basic 6 для получения дополнительной информации.