Типаж? из текстовых блоков регулярное выражение функции
Я недавно начал использовать regEx
для работы и теперь нашел довольно странную проблему, которую я, по-видимому, не могу решить сам...
Например, для необработанных данных:
Screw М4х20 , DIN7985
- это исходный текст С проблемой
Screw M4x20 , DIN7985
- Это ручной письменный текст, который дает мне
идеальные результаты
Если я сейчас попытаюсь выбрать размерность "M4x20" со следующими regEx
:
(b[M]?d+xd+b)
Это не дает мне никаких результатов... ни в Excel, ни на сайтах типа regExr
:
Демонстрация регулярных выражений
Если я удаляю M4x20
и пишу его новый, я действительно получаю результаты.
Я абсолютно не представляю, в чем заключается проблема, за исключением того, что она вызвана M-символом и x-символом - Для справки: остальной текст / буквы (a-z) и тоже не работает. Цифры работают нормально.
Есть ли какой-то способ проанализировать это?Редактировать:
Есть, и я только что узнал: буквы-это кириллические буквы, которые не распознаются. Хотя они, по-видимому, могут быть изменены на латинские буквы довольно легко.
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