正则表达式,在特定情况下从 windows 到 linux 的路径
regular expressions, path from windows to linux in specific situations
我正在尝试将路径定界符从 windows 更改为 linux 样式,但仅限于特定代码行。
找到特定行没问题,但我希望自动替换。
IDE: 日食
每个要更改的路径都有一个复制语句,例如:
copy "path\to\..\file.cpy"
.
要搜索的正则表达式:(copy[\s]+")[(..|[\w]+)[\]]+(.cpy")
问题,我只得到一行的开头和结尾:$1 是 copy " 部分,$2 是 .cpy" 部分。我不知道如何获取多个文件夹。
您需要这种使用 \G
特征的模式,它在字符串的开头或上一个匹配项之后的位置成功:
pattern: ((?:\G(?!\A)|copy\s+")[^\"]*)\
replacement: /
详情:
( # 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"))[^\"]*)\
我正在尝试将路径定界符从 windows 更改为 linux 样式,但仅限于特定代码行。 找到特定行没问题,但我希望自动替换。
IDE: 日食
每个要更改的路径都有一个复制语句,例如:
copy "path\to\..\file.cpy"
.
要搜索的正则表达式:(copy[\s]+")[(..|[\w]+)[\]]+(.cpy")
问题,我只得到一行的开头和结尾:$1 是 copy " 部分,$2 是 .cpy" 部分。我不知道如何获取多个文件夹。
您需要这种使用 \G
特征的模式,它在字符串的开头或上一个匹配项之后的位置成功:
pattern: ((?:\G(?!\A)|copy\s+")[^\"]*)\
replacement: /
详情:
( # 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"))[^\"]*)\