首页 > 解决方案 > 如何用grep匹配一个包含[]的字符串,[]中的字符由大小写字母和+#组成?

问题描述

字符串是这样的:

I am a [PHP] engineer, not a [Java] engineer, nor a [C++] engineer, nor a [C#] engineer.

我写了这个表达式,但它不起作用。

grep -n '\[([a-zA-Z+#]+)\]' filename

标签: regexgrep

解决方案


grep 仅识别BRE,除非指定-P-E-r标志之一。而且,那里不需要括号。

您应该使用 BRE 等价于+

grep -n '\[[a-zA-Z+#]\{1,\}\]' filename

或指定-E标志以使其识别ERE(确实不如前者可移植但更易于阅读)

grep -E -n '\[[a-zA-Z+#]+\]' filename

推荐阅读