为什么PCRE grep将前斜杠视为空白?

为什么PCRE grep将前斜杠视为空白?,grep,pcre,regex-lookarounds,positive-lookbehind,Grep,Pcre,Regex Lookarounds,Positive Lookbehind,在bash上,我试图在一个空格后立即获取大写字母(a来自文件a.jpg) 这是一个负前瞻(?!,它应该在空格后返回任何大写字母。因此,它应该只返回a。但是,它返回所有大写字母: P T F A 似乎它将前斜杠视为空白?为什么?我如何才能只获得最后一个A 应在空格后返回任何大写字母 不,它根本不是这么说的。它说“任何大写字母后面都不跟正斜杠和s。”它们都不跟那个。所以你得到了所有的大写字符 你想要的是积极的回顾 (?<=\s)[A-Z] (? 应在空格后返回任何大写字母 不,它根本不是这

在bash上,我试图在一个空格后立即获取大写字母(
a
来自
文件a.jpg

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

P
T
F
A
似乎它将前斜杠视为空白?为什么?我如何才能只获得最后一个
A

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

不,它根本不是这么说的。它说“任何大写字母后面都不跟正斜杠和s。”它们都不跟那个。所以你得到了所有的大写字符

你想要的是积极的回顾

(?<=\s)[A-Z]
(?
应在空格后返回任何大写字母

不,它根本不是这么说的。它说“任何大写字母后面都不跟正斜杠和s。”它们都不跟那个。所以你得到了所有的大写字符

你想要的是积极的回顾

(?<=\s)[A-Z]

(?使用grep和
-p
可以使用
\h
匹配水平空白字符,并且,正如注释中指出的,可以使用
\K
清除匹配缓冲区,然后匹配单个大写字符a-Z

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

A

使用grep和
-p
可以使用
\h
匹配水平空白字符,并且,正如注释中指出的,可以使用
\K
清除匹配缓冲区,然后匹配单个大写字符a-Z

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

A
我建议你去?