gsutil - 正则表达式与替代不工作

Posted

技术标签:

【中文标题】gsutil - 正则表达式与替代不工作【英文标题】:gsutil - regex with alternative not working 【发布时间】:2016-09-29 02:21:04 【问题描述】:

我希望在 Google 存储桶和我的本地目录之间同步内容。我想在执行此操作时忽略某些文件。

就像我想忽略以 country.csv 和 version.csv 结尾的文件。

所以我使用以下正则表达式,它不起作用

gsutil -m rsync -x ".*country\.csv$|.*version\.csv$" gs://[bucket_id] test/

我已经在 regex101.com 上测试了这个正则表达式

另一方面,当我尝试使用单个正则表达式时,它可以工作

gsutil -m rsync -x ".*country\.csv$" gs://[bucket_id] test/

我正在使用 Windows 机器。 我指的是gsutil documentation

谁能确定问题出在哪里?

编辑:

gsutil 上的错误“不是内部或外部命令、可运行程序或批处理文件”

【问题讨论】:

文档建议在正则表达式周围使用单引号。你试过了吗? @SilentMonk:单引号在 Windows 上不起作用,上面提到的单正则表达式也仅适用于双引号 双反斜杠呢?在 Unix 上,单引号防止扩展,即 `\` 被本地传递给 python,这会导致 python 字符串中出现本地反冲,这正是你想要的。 @SilentMonk:双反斜杠在 Windows 上也不起作用。我必须使用单个反斜杠来转义点(。) 使用powershell 而不是cmd 尝试同样的事情。那么至少你应该能够使用单引号,如果这很重要的话。 | 至少不应被视为壳管。 【参考方案1】:

这应该可以工作:

gsutil -m rsync -x ".*country\.csv$^|.*version\.csv$" gs://[bucket_id] test/

参见例如How to pass a quoted pipe character to cmd.exe?

【讨论】:

以上是关于gsutil - 正则表达式与替代不工作的主要内容,如果未能解决你的问题,请参考以下文章

通过正则表达式或通配符一次操作 gsutil 中的多个存储桶

python替代正则表达式搜索返回元组无

PHP:正则表达式替代 array_intersect

正则表达式的可变长度lookbehind-assertion替代方案

在MySQL中使用正则表达式

regex正则表达式学习