问题很简单,但我无法解决。
我有以下 perl 正则表达式:
echo ... | grep -P "(?i)(v(ersion)?)\s?(?!0)\d(\.|,)\d{1,}"
这应该匹配描述某个版本的每个字符串(例如V2,0
或version 1.2
)。但是当版本以 开头时,它不匹配V0...
。但是,当我执行此操作时,我收到错误,-bash: !0: event not found
因为!<string>
它用于搜索命令历史记录并执行最新命中。
这基本上破坏了我的 perl 正则表达式。我怎样才能避免 shell 将其解释为快捷方式?
答案1
使用单引号而不是双引号来保护你的正则表达式免受 shell 的攻击。