Страницы: 1
RSS
Анализ текста регулярными выражениями (RegExp), поиск по раскладке- русский алфавит не ищет, только принудительно, через |
 
По столбцу Е, в тексте вида Twin F10036 Lon.Skyl.Tin3x 100g ПО 100 ГР. нужно найти цифру(ы) любую, с пробелом или без, содержащую букву Xx в русской или английской раскладке(жирным подсветил), этот случай может быть или не может быть, в коде, в примере, эта строка выглядет так:
Код
objRegExp.Pattern = "(\S)(\d){1,2}( )?([Xx])\b|([Хх])|( )(\d){1,2}( )?([А-Яа-яXx])\b"

я принудительно и русскую раскладку поставил и английскую вот так, через ИЛИ:([Xx])\b|([Хх]), а можно как-то нормально сделать вида: [А-Яа-яA-Za-z]? т.е. упростить хочется код.
 
Может, такой попоробовать?
Код
"\d{1,2}[ ]?(?:[xX]|[хХ])"
Кому решение нужно - тот пример и рисует.
 
Пытливый, да, так работает, спасибо!
 
Так разве в той теме https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=122751
мы это не выяснили?
Код
.IgnoreCase = True
     .Pattern = "[A-Z]\d{1,2}(?=\s?[XХ])"
 
Kuzmich, это другой макрос, Ваш вариант я не пробовал в нём, потому-что сейчас текст сильно отличается от задания в той теме.  
 
Пытливый, только сейчас увидел, что может и не быть пробела между искомой комбинацией число-буква, вот такой ещё вариант встречается:
Twin F10036 Lon.Skyl.Tin 3x100g 3 ШТ. ПО 100 ГР. -можете помочь в этом трудном деле ещё раз?
 
Так что надо вытащить то? "3х" или "3х100g"? А то в начале ветки цифры с иском, а в конце - цифры с иксом и цифрами. :)

Если первый вариант - так там все тащит нормально с моим паттерном.
Кому решение нужно - тот пример и рисует.
 
зх - тащит нормально, нет вопросов;
я говорю,- только сейчас увидел, что встречается БЕЗ пробела.... типо 3x100g , 4x200g и.т.д.    может как-то отдельно замутить под это дело????
ну, типо или в паттерне: число, буква (Xx), опять число..... я не видел раньше такой комбинации(
Изменено: Домкрат - 18.11.2019 17:44:20
 
Вы напишите, какой конечный результат вам нужен? Надо, чтобы из строки доставало - что? При чем здесь "без пробела"? Мой паттерн из строки "без пробела" прекрасно тащит 3х. А вам что нужно из этой строки?
Кому решение нужно - тот пример и рисует.
 
Цитата
Пытливый написал:
Мой паттерн из строки "без пробела" прекрасно тащит
Коллега, там может быть ещё и не разрывный пробел Alt+0160. Просто ТС не хочет помогать отвечающим, потому и пример такого некорректного поведения и не представляет - он любит, чтобы его уговаривали :)
 
Андрей VG, вон оно че.. :) Спасибо за подсказку. :)
Кому решение нужно - тот пример и рисует.
 
Цитата
Андрей VG написал:
Просто ТС не хочет помогать отвечающим
я ещё раз повторяю, что ПЕРЕД написанием задания я НЕ ВИДЕЛ случая, когда между цифрой, буквой "X" и ещё одной цифрой нет пробела, уже в ходе тестирования пожжее, увидел эту тему. мне покаятся нужно? - кайюс,кайюс,кайюс! Вам от этого лехче стало)?
Цитата
Пытливый написал:
А вам что нужно из этой строки?
через "или"  "|" к Вашей строке:
Цитата
Пытливый написал:
1"\d{1,2}[ ]?(?:[xX]|[хХ])"
добавить случай когда нет пробела: цифраXцифра. У меня выдаёт ошибку, когда для теста делаю вот так:"(\d)[Xx](\d))" прочему -то вот в этом месте кода:
Код
Sub frags()
    With Sheets("Домик")
        Set goods = .Columns(5).Find(what:="Наименование товара")
        lrow = .Cells(.Rows.Count, 5).End(xlUp).Row
        Set nrange = .Range(.Cells(goods.Row, 5), .Cells(lrow, 5))
        Set objRegExp = CreateObject("VBScript.RegExp")
      
        objRegExp.Pattern = "(\d)[Xx](\d))" - вот здесь: цифра-буква-цифра
        numb_temp = ""
        numb_goods = ""
        For i = lrow To goods.Row Step -1
            If .Cells(i, 7).Value <> "" Then numb_temp = .Cells(i, 7).Value
            If objRegExp.Test(.Cells(i, 5)) Then - вот здесь красит, и выдает ошибку!
                .Cells(i, 5).Interior.Color = 16709070
                numb_goods = IIf(numb_goods = "", numb_temp, numb_temp & ", " & numb_goods)
            End If
        Next
        If numb_goods <> "" Then MsgBox "в товаре(ах) № " & numb_goods & " есть неописанные фраги"
    End With
End Sub
Изменено: Домкрат - 19.11.2019 10:11:48
 
Просто оставлю ЭТО здесь, вдруг кому пригодится схематичное отображение формируемого регулярного выражения.
Я не волшебник, я только учусь.
 
трусы превращаются:
учитываются варианты с пробелами, без пробелов, в трусах и без. всем спасибо, кто помог или просто попкон кушал
Код
objRegExp.Pattern = "\d{1,2}[ ]?(?:[xX]|[хХ])|(\d){1,2}( )?([Xx])(\d)"
 
Цитата
Домкрат написал:
я ещё раз повторяю, что ПЕРЕД написанием задания я НЕ ВИДЕЛ случая, когда между цифрой, буквой "X" и ещё одной цифрой нет пробела, уже в ходе тестирования пожжее, увидел эту тему. мне покаятся нужно?
Всё проще - приложить ещё один файл-пример с найденной проблемой, а не пытаться описывать её на пальцах.
 
Цитата
Домкрат написал:
Twin F10036 Lon.Skyl.Tin 3x100g 3 ШТ. ПО 100 ГР. -можете помочь в этом трудном деле ещё раз?
я думал тут все видно невооружённым глазом, ладно , буду иметь введу. Спасибо за подсказку, - иногда между декларациями тяжело соображается.- думаешь, что всё и всем понятно.
Страницы: 1
Наверх