Regex с подстановочными знаками и косой чертой? - PullRequest
0 голосов
/ 07 июня 2018

Я использую WinGrep и Notepad ++ (Windows) с некоторыми другими программами, использующими Regex.Я также пытался решить эту проблему с помощью этого сайта: - http://www.regexlab.com/wild2regex

Пример текста, с которым я работаю, находится здесь: -


newmtl models\cat1\item1
    illum 1
    Kd 1 1 1
    map_Kd models\cat1\item1.dds

newmtl models\cat1\item2
    illum 1
    Kd 1 1 1
    map_Kd models\cat1\item2.dds

newmtl models\cat1\item3
    illum 1
    Kd 1 1 1
    map_Kd models\cat1\item3.dds

Я хотел бы изменить обратную косую черту в строках заголовка "newmtl" на прямую косую черту, не затрагивая нижнюю строку "map_Kd".«Models cat # item #» может быть чем угодно, все это подстановочные знаки с любой буквой или цифрой, возможно, с подчеркиванием и восклицательным знаком.Это действительно сложно для меня, так как это не только возвращает несколько подстановочных знаков, но и работает со специальными символами.

Любая помощь будет принята с благодарностью!:)

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

При использовании NP ++ это должно работать.

Найти (?m)(?:^\h*newmtl|\G(?!^))[^\\\r\n]*\K\\
Заменить /

http://rubular.com/r/IG0yMflzIa

Версия для чтения

 (?m)                    # Multi-line mode
 (?:                     # ------------
      ^ \h*                   # BOL and optional horizontal whitespace
      newmtl  
   |                        # or,
      \G                      # Anchor, start this match where last left off
      (?! ^ )                 # Except if its BOL
 )                       # ------------
 [^\\\r\n]*              # Anything but \ or CRLF, stay on this line
 \K                      # Ignore all that matched up to here
 \\                      # The only thing that is left, will be replaced
0 голосов
/ 07 июня 2018

Кажется достаточно простым.В Notepad ++ просто запустите

Найдите что: (newmtl .+?)\\(.+?)\\(.+?)

Замените на: $1/$2/$3

...