| 
    
            
         
         | 
    
  | 
вопрос по шаблону regexp | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        kittystark    
     15.12.11 
            ✎
    13:32 
 | 
         
        дана строка "01 название товара|код=12345"
  
        по шаблону "^\d{2}\s+(.+)(?:\|код=)" этой строке через VBScript.RegExp делаем replace на "$1" в результат записывается "название товара12345" тоже самое и для шаблона "^\d{2}\s+(\D+)(?:\|код=)" для шаблона "^\d{2}\s+(.+)(?:\|код=).*" все пучком, но уже достало эти .* каждый раз указывать и в начале и в конце большинства моих шаблонов вот не могу понять, с какого в $1 для обоих случаев попадает весь "хвост" строки ??? может кто объяснит ? а то "этот борщ меня просто бесит"(с) игры с global, multiline ничего не дают  | 
|||
| 
    1
    
        sergeante    
     15.12.11 
            ✎
    15:09 
 | 
         
        (0) попробуй нежадный модификатор "?"
  
        "^\d{2}\s+(.+?)(?:\|код=)"  | 
|||
| 
    2
    
        sergeante    
     15.12.11 
            ✎
    15:10 
 | 
         
        иначе конструкшн (.+) пытается захавать как можно больше символов и упирается в "просмотр вперёд"     
         | 
|||
| 
    3
    
        sergeante    
     15.12.11 
            ✎
    15:13 
 | 
         
        точнее не в "просмотр вперёд" а в конец строки
  
        вот так попробуй "^\d{2}\s+(.+?)\|"  | 
|||
| 
    4
    
        Fragster    
     гуру 
    15.12.11 
            ✎
    15:13 
 | 
         
        это из-за конца строки...
  
        походу сделай ^\d{2}\s+(.+)(код=){0,1}  | 
|||
| 
    5
    
        sergeante    
     15.12.11 
            ✎
    15:24 
 | 
         
        (4) не, не прокатит
  
        вот так ещё вроде работает ^\d{2}\s+([^|]+)  | 
|||
| 
    6
    
        Fragster    
     гуру 
    15.12.11 
            ✎
    15:40 
 | 
         
        а, ю* нужна для того, чтобы заменить... делай не через замену, а через поиск     
         | 
|||
| 
    7
    
        kittystark    
     15.12.11 
            ✎
    16:46 
 | 
         
        не катят эти шаблоны... та же песдня...
  
        но как только к ним добавляем .* все как надо вот вопрос из той же оперы: почему для строки abcXYZdef шаблон (XYZ) по замене $1 дает abcXYZdef шаблон .(XYZ). по замене $1 дает abXYZef шаблон ..(XYZ).. по замене $1 дает aXYZf ведь XYZ ну никак, даже частями, не совпадают с abc и def, а их огрызки прилепляются и только ...(XYZ)... c эквивалентым ему .*(XYZ).* дает ожидаемый результат XYZ ? вижу закономерность, но не понимаю почему оно именно так работает  | 
|||
| 
    8
    
        Fragster    
     гуру 
    15.12.11 
            ✎
    16:46 
 | 
         
        (7) нафиг замену, делай поиск только нужной инфы     
         | 
|||
| 
    9
    
        Fragster    
     гуру 
    15.12.11 
            ✎
    16:48 
 | 
         
        замена работает так, потому что чтобы осталось только то, что тебе нужно - нужно, чтобы ВСЯ строка соответствовала паттерну. иначче заменится только то, что соответствует паттерну, что верно.
  
        точно также, как СтрЗаменить работает, только не с обычными строками, а с паттернами. ну и $1, это же не просто так - это "первое подсоответствие", т.е. что в скобочках.  | 
|||
| 
    10
    
        kittystark    
     15.12.11 
            ✎
    17:21 
 | 
         
        (9) да блин, ценные три буквы "ВСЯ"
  
        теперь все встало на свои места спасибо  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |