Типаж? из текстовых блоков регулярное выражение функции


Я недавно начал использовать regEx для работы и теперь нашел довольно странную проблему, которую я, по-видимому, не могу решить сам...

Проблема: я получаю данные от клиентов (со всего мира) и должен их анализировать. Данные на этот раз имеют некоторые особенности.

Например, для необработанных данных:

Screw М4х20 , DIN7985 - это исходный текст С проблемой

Screw M4x20 , DIN7985 - Это ручной письменный текст, который дает мне идеальные результаты

Если я сейчас попытаюсь выбрать размерность "M4x20" со следующими regEx:

(b[M]?d+xd+b)
Это не дает мне никаких результатов... ни в Excel, ни на сайтах типа regExr:

Демонстрация регулярных выражений

Если я удаляю M4x20 и пишу его новый, я действительно получаю результаты.

Я абсолютно не представляю, в чем заключается проблема, за исключением того, что она вызвана M-символом и x-символом - Для справки: остальной текст / буквы (a-z) и тоже не работает. Цифры работают нормально.

Есть ли какой-то способ проанализировать это?

Редактировать:

Есть, и я только что узнал: буквы-это кириллические буквы, которые не распознаются. Хотя они, по-видимому, могут быть изменены на латинские буквы довольно легко.

1 2

1 ответ:

Два символа M и еще x являются частью кириллических букв и представлены в регулярном выражении как \u041C (M) и еще \u0445 (x).

Демонстрация регулярных выражений

Код VBA :

Set re = CreateObject("VBScript.RegExp")
re.Global = True

re.Pattern = "\u041C?\d+\u0445\d+"
For Each Match In re.Execute("Screw М4х20 , DIN7985")
    Debug.Print (Match)
Next

Вывод:

М4х20