Regex 正则表达式,特定情况下从windows到linux的路径

Regex 正则表达式,特定情况下从windows到linux的路径,regex,eclipse,directory,replaceall,Regex,Eclipse,Directory,Replaceall,我正在尝试将路径分隔符从windows样式更改为linux样式,但仅在特定的代码行中。 找到具体的线路没有问题,但我想自动更换 IDE:eclipse 每个要更改的路径都有一个copy语句,例如:copy“Path\to\..\file.cpy” 要搜索的正则表达式:(复制[\s]+”[(..|[\w]+)[\\]+(.cpy”) 问题是,我只得到一行的开头和结尾:$1是复制“部分,$2是.cpy”部分。我不知道如何获取多个文件夹。您需要这种模式,它使用\G功能,在字符串开头或上次匹配后的位置成

我正在尝试将路径分隔符从windows样式更改为linux样式,但仅在特定的代码行中。 找到具体的线路没有问题,但我想自动更换

IDE:eclipse

每个要更改的路径都有一个copy语句,例如:
copy“Path\to\..\file.cpy”

要搜索的正则表达式:
(复制[\s]+”[(..|[\w]+)[\\]+(.cpy”)


问题是,我只得到一行的开头和结尾:$1是复制“部分,$2是.cpy”部分。我不知道如何获取多个文件夹。

您需要这种模式,它使用
\G
功能,在字符串开头或上次匹配后的位置成功:

pattern: ((?:\G(?!\A)|copy\s+")[^\\"]*)\\
replacement: $1/
详情:

( # capture group 1
    (?: # non capturing group with two possible starts
        \G     # contiguous to the previous match or the start of the string
        (?!\A) # disallow the start of the string to match
      |      # OR   
        copy\s+" #"# first match
    )
    [^\\"]* #"# all that isn't a backslash or a double quote
)
\\ # the literal backslash
在开始时(第一次匹配之前),第一个分支失败(由于
\G
断言),只有第二个分支可以成功。一旦完成,第一个分支就能够成功

一旦到达最后一个反斜杠,连续性就会中断(即:第一个分支不能再成功,模式成功的唯一途径是第二个分支,等等)

注意:如果要确保路径以
.cpy
扩展名结尾,则需要在第二个分支中添加带有前瞻性断言的条件:

((?:\G(?!\A)|copy\s+"(?=[^"]\.cpy"))[^\\"]*)\\

谢谢,以前从未见过\G功能