Я хочу совместить символы, отличные от квадратных скобок, в регулярном выражении.Как избежать квадратных скобок внутри скобок в grep
именно я хочу, чтобы соответствовать некоторые специальные символы и некоторые другие не делают, поэтому я хочу, чтобы указать им
# grep $'[^a-zA-Z0-9#\\/:!<>{},=?.()["_+;*\'&|$-]' file
Это не хватает ]
, я попытался убежать с \]
, \\]
и так далее, Я читал, что люди делают это внешнее [^]
, но мне нужно это внутри!
Ваше выражение верное, но вашего объяснения нет. Большинство реализаций регулярных выражений не распознают '\\' как escape-символ в наборах, поэтому вы должны помещать ']' где-то там, где он не является частью синтаксиса, - непосредственно за '' '' или '' [^'. –
@GuntramBlohm Вы правы. Забавно, как мои пальцы знали, что делать лучше, чем мой мозг в тот момент. Я исправил объяснение. –
Да, это сработало, но почему так нужно? Есть спецификация? –