Regex 正则表达式,特定情况下从windows到linux的路径
我正在尝试将路径分隔符从windows样式更改为linux样式,但仅在特定的代码行中。 找到具体的线路没有问题,但我想自动更换 IDE:eclipseRegex 正则表达式,特定情况下从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功能,在字符串开头或上次匹配后的位置成
每个要更改的路径都有一个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功能