I would like to match these characters: [ ] ( ) in a character class in a regex, how can I do that?
echo 'some text (some text in parenthesis) [some other in brackets]' | grep '[\[\]\(\)]'
This one doesn't match any character.
You can use it like this:
echo 'some text (some text in paranthesis) [some other in brackets]' |
grep -o '[][()]'
(
)
[
]
Please note that:
]
and [
are placed right after opening [
in a bracket expression then they are treated as literals ]
or [
.^
at the first place for negation before ]
or [
(
and )
inside a bracket expression.Just FYI:
Accoding to the grep
documentation, section 3.2 Character Classes and Bracket Expressions:
Most meta-characters lose their special meaning inside bracket expressions.
‘]’
ends the bracket expression if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first.
Also, you can see that (
, [
and )
are not special in the bracket expressions.
Since ]
in your '[\[\]\(\)]'
bracket expression pattern is not the first character, it ends the pattern, and the next ]
created an incomplete bracket expression.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With