带有通配符和斜杠的正则表达式?

时间:2018-06-07 17:40:44

标签: regex grep notepad++

我正在使用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 :(得分:2)

看起来很简单。在Notepad ++中,只需运行

即可

找到:(newmtl .+?)\\(.+?)\\(.+?)

替换为:$1/$2/$3

答案 1 :(得分:1)

如果使用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