【发布时间】:2019-04-04 12:58:42
【问题描述】:
我正在尝试使用带有正则表达式的 grep 提取字符串的一部分。我已经使用regexr 测试了正则表达式并且它正在工作。我在 macOS 上。
这是我的代码:
echo -e '"HI":"Hola!"' | grep -o '(?=[^\"]).+?(?=":")'
如果我尝试使用 -P 选项,它会显示 grep 的用法说明:
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
我想得到HI 作为输出。我需要通过管道输出grep 还是我缺少其他东西?
谢谢
【问题讨论】:
-
您没有使用兼容的正则表达式测试器测试正则表达式。 POSIX BRE 正则表达式不支持环视。你的意思是使用
echo -e '"HI:"Hola!""' | grep -Po '(?<=").+?(?=:")'? -
你说得对,我用regexr来测试。
-P选项不起作用,我在 macOS 上。我要更新问题描述。 -
我用
-P选项解决了这个问题。我必须用brew安装grep。 macOS 上的grep版本存在问题。结果代码是这样的:echo -e '"HI":"Hola!"' | ggrep -Po '(?=[^\"]).+?(?=":")'