我想在正则表达式的字符类中匹配这些字符:[ ] ( ),我该怎么做?
echo 'some text (some text in parenthesis) [some other in brackets]' | grep '[\[\]\(\)]'
这个不匹配任何字符。
我想在正则表达式的字符类中匹配这些字符:[ ] ( ),我该怎么做?
echo 'some text (some text in parenthesis) [some other in brackets]' | grep '[\[\]\(\)]'
这个不匹配任何字符。
echo 'some text (some text in paranthesis) [some other in brackets]' | grep -o '[][()]'
(
)
[
]
在字符类内部,您无需转义(
和)
。此外,如果您将]
和[
放置在打开的[
之后,那么您也不需要转义它们。
仅供参考:
大多数元字符在括号表达式中失去了特殊含义。
‘]’
如果不是第一个列表项,则结束括号表达式。因此,如果您想将‘]’字符作为列表项,请将其放在首位。
另外,您可以看到在括号表达式中,(
、[
和)
没有特殊含义。
由于您的'[\[\]\(\)]'
括号表达式模式中的]
不是第一个字符,它会结束该模式,而下一个]
则创建了一个不完整的括号表达式。
最常见的方法是在字符前面加上 \,但奇怪的是,在使用 grep 时似乎不起作用。
如果您可以使用 Perl,请执行以下操作:
% cat yourfile.txt | perl -ne 'print if(/[\[\]\(\)]/);';
[][()]
是一个括号表达式,而不是字符类。[:space:]
是一个字符类,因此可以作为[[:space:]]
包含在括号表达式中。 - Ed Morton