正则表达式匹配括号之间的字符串

时间:2013-11-15 14:45:15

标签: regex bash

我有一个正确的正则表达式:

[a1]
[b892jklas]
[klaj218349]
[alllasd]

但我只是想匹配并返回:

a1
b892jklas
klaj218349
alllasd

我正在使用以下命令

cmd | grep -i -o -E '\[[[:alnum:]]\]'

但我不知道如何从结果中排除括号。

3 个答案:

答案 0 :(得分:2)

更新:

tr -d '[]'也有效(感谢@ 1_CR评论)

原始邮件:

... | tr -s "[" "" | tr -s "]" ""是最简单的解决方案。您还可以使用sed ...

答案 1 :(得分:2)

grep -Po '(<=\[)[a-zA-Z0-9]+(?=\])'

答案 2 :(得分:1)

如果GNU grep是一个选项(也应该针对最新版本的libpcre.so进行编译,以使\K起作用)

grep -oP '\[[[:space:]]*\K[[:alnum:]]+(?=[[:space:]]*\])'