LevT:
YuS_2
Цитата:
Для пишущего упрощает, для сиюминутного халявщика тоже упрощает.
А для тех, кто хочет научиться править чужие и в перспективе писать свои "сценарии для винды" - затрудняет (повышает порог вхождения)
Как мы сегодня видели, можно достичь уровня farag, не сильно вдаваясь в регэкспы.
И это правильно.
Регэкспы и подобное новичков отпугивают: что лично ты признал их посторонней сущностью хорошо, но общий предрассудок от этого не рассосётся.
Цитата:
Ты видимо не ходил по моей ссылке, вытащу пример
Код:
YuS_2
Цитата:
А можно и не избегать... особенно, если решение с ними упрощает задачу. |
Для пишущего упрощает, для сиюминутного халявщика тоже упрощает.
А для тех, кто хочет научиться править чужие и в перспективе писать свои "сценарии для винды" - затрудняет (повышает порог вхождения)
Как мы сегодня видели, можно достичь уровня farag, не сильно вдаваясь в регэкспы.
И это правильно.
Регэкспы и подобное новичков отпугивают: что лично ты признал их посторонней сущностью хорошо, но общий предрассудок от этого не рассосётся.
Цитата:
в повершел оказывается возможно регэкспы комментировать прямо в коде |
Ты видимо не ходил по моей ссылке, вытащу пример
Код:
# skip lines until we get to our sentinel line { $preamble -and $_ -eq "start end module name" } { $preamble = $false; continue } #00007ff6`e9da0000 00007ff6`e9de3000 notepad (deferred) #00007ffe`9ccb0000 00007ffe`9ce9d000 ntdll (pdb symbols) c:\symbols\ntdll.pdb\B8AD79538F2730FD9BACE36C9F9316A01\ntdll.pdb '^([0-9a-f`]{17})\s([0-9a-f`]{17})\s+(\S+)\s+\(([^\)]+)\)\s*(.+)?' { # see breakdown of the expression later in the post ....... ([0-9a-f`]{17})\s([0-9a-f`]{17})\s+(\S+)\s+\(([^\)]+)\)\s*(.+)? # example input: 00007ffe`9ccb0000 00007ffe`9ce9d000 ntdll (pdb symbols) c:\symbols\ntdll.pdb\B8AD79538F2730FD9BACE36C9F9316A01\ntdll.pdb (?x) # ignore pattern whitespace ^ # the beginning of the line ([0-9a-f`]{17}) # capture expression like 00007ff6`e9da0000 - any hex number or backtick, and exactly 17 of them \s # a space ([0-9a-f`]{17}) # capture expression like 00007ff6`e9da0000 - any hex number or backtick, and exactly 17 of them \s+ # skip any number of spaces (\S+) # capture until we get a space - this would match the 'ntdll' part \s+ # skip one or more spaces \( # start parenthesis ([^\)]) # capture anything but end parenthesis \) # end parenthesis \s* # skip zero or more spaces (.+)? # optionally capture any symbol file path |