0

在 bash 上,我试图在空格(Afrom File A.jpg)之后立即获取大写字母。

echo "Path/To/File A.jpg" | grep -oP '[A-Z](?!/s)'

这是一个负前瞻(?!,应该在空格之后返回任何大写字母。所以,它应该只返回A。但是,它返回所有大写:

P
T
F
A

似乎将正斜杠视为空格?为什么?我怎样才能得到最后一个A

4

2 回答 2

2

应该在空格后返回任何大写字母

不,这根本不是它所说的。它说“任何不跟斜杠和 s 的大写字母。” 好吧,没有一个是紧随其后的。所以你得到所有的大写字符。

你想要的是一个积极的回顾。

(?<=\s)[A-Z]
于 2021-04-24T05:29:29.883 回答
0

使用 grep-P可以匹配一个水平空白字符,\h并且正如评论中指出的那样,您可以使用它\K来清除匹配缓冲区,然后匹配单个大写字符 AZ。

echo "Path/To/File A.jpg" | grep -oP '\h\K[A-Z]'

输出

A
于 2021-04-24T16:34:18.770 回答